Je pense que vous trouverez que cela ne fonctionne pas en C++ (mais ils ont peut-être changé les règles de grammaire). Vous voulez dire probablement quelque chose comme ceci:
struct Node {
event *thing;
Node *next;
};
Cela fonctionne en C++, car Node
est équivalent à struct Node
s'il n'y a pas déjà quelque chose appelé Node
(ce qui provoque parfois des erreurs embarrassantes quand Foo
est à la fois une classe et la méthode d'instance d'une autre classe, ce qui arrive dans certains styles de codage).
La correction est de dire struct Node
. Je préfère ça; il semble plus pur. Il y a de bonnes raisons d'utiliser un typedef (par exemple des choses comme TUInt64
qui pourrait avoir été historiquement une structure en raison du manque de support du compilateur). Si vous utilisez un typedef, il n'y a pas de raison de donner un nom différent à la structure car ils se trouvent dans des espaces de noms différents (les structures de l'IIRC sont un "espace de noms de balises").
La version habituelle typedef est quelque chose comme ceci:
typedef struct Node Node;
struct Node {
event *thing;
Node *next;
};
Vous pouvez également changer l'extension du fichier à .mm puis cela fonctionne parce que vous compilez Objective-C++!
Pas une liste liée. –
@tc, ni la structure 'event' d'origine de l'OP, bbum signale qu'une classe serait une meilleure alternative à une structure C de vanilla pour les raisons mentionnées ci-dessus. – dreamlax
Là; maintenant c'est une liste chaînée. :) – bbum