Merci à tous ceux qui ont aidé. Le problème était en effet ailleurs. Permettez-moi de vous expliquer:
En C#, nous utilisons des médicaments génériques (qui sont des équivalents rugueux du système de modèles de C) dans la définition de classe et peuvent appliquer des contraintes sur les:
class Node<T> where T:SomeClass { ... }
qui nous permet d'instancier des objets de type T
à l'intérieur de cette classe. Ces objets auront tous les membres de SomeClass
automatiquement. Vous obtenez également un bon intellisense en bonus. Une grande chose à propos de ce système est que l'intégrité de cette classe peut être vérifiée au moment de la compilation sans que nous ayons à instancier un objet de type Node<T>
.
[avertissement: Ce qui suit est ma compréhension. Corrige moi si je me trompe.]
C++ ne fonctionne pas de cette façon. C++ vous permettra d'accéder à n'importe quel paramètre de template (dans mon cas c'était State::Move
). La classe modélisée en elle-même ne peut/ne peut pas garantir que le paramètre template aura réellement un membre nommé Move
. Ce n'est que lorsque vous instanciez un objet de classe modélisée, tel que Node<SomeType> x;
, que SomeType
doit contenir un membre nommé Move
et renvoie une erreur si ce n'est pas le cas.
Dans mon problème, j'instanciation d'un objet de Node
et de la transmettre un int
comme paramètre de modèle, ce qui n'a évidemment aucun membre nommé Move
, il me plaignais (pointant malheureusement à un endroit très mal, mais c'est une autre histoire). Le remplacer par le type approprié a corrigé l'erreur pour moi.
Hope this helps quelqu'un sur la route.
Etes-vous sûr que c'est la ligne avec l'erreur? – tkausl
@tkausl: Au moins dans ce double-clic, le message m'amène à cette ligne. – dotNET
Compile pour moi: http://cpp.sh/2lqe5 – tkausl