Je construis un jeu et je compilais en voyant quelles erreurs venaient et il y en a un qui est très commun et très énigmatique pour moi:Aide de la syntaxe C++ pour la définition récursive (ou c'est ce que mon compilateur me dit)
1>c:\users\owner\desktop\bosconian\code\bosconian\ship.h(9) : error C2460: 'Ship::Coordinate' : uses 'Ship', which is being defined
Cela vient également pour la classe SpaceObject et toutes les autres dérivations de celle-ci. La classe Coordinate est simplement une classe de vecteurs 2d et, si cela est important, ne fait référence qu'à une classe Environment.
La classe Environnement référence de la SpaceObject mais je ne crois pas que ce soit un problème (corrigez-moi si je me trompe)
Ceci est mon premier projet à plus grande échelle en C++ et je me demandais si cela pourrait être un erreur de débutant commun avec une solution plus évidente. Si c'est important, la hiérarchie de la classe SpaceObject n'est pas complètement remplie, mais elle est remplie à plusieurs niveaux après les classes SpaceObject et Ship. .
.
.
Modifier: Ceci est en réponse au commentaire.
-Quand je dis référence je veux dire se référer à cette classe dans une autre classe. Comme dans la classe I SpaceObject référence à la classe de coordonnées:
Coordonnée * Position
Environnement fait faire référence à des pointeurs SpaceObject, mais je ne peux pas voir que je ne pouvais pas faire référence à des classes comme ça ... Je veux dire, toutes mes classes doivent se rapporter d'une manière ou d'une autre, non?
En réponse à coller le code, il est assez dur parce qu'ils sont énormes classes, mais voici la ligne l'erreur pointe vers:
public:
Ship(Coordinate * positionObject_, int direction_, int possibleDirections_, int maxHealth_, Component * objectSectors_, int numOfObjectSectors_, double speed_);//this is the line
void move();//handles the actual translation of calculated move on the map (i.e. bounds checking)
Vous avez apparemment un objet Ship (pas une référence ou un pointeur) dans votre classe Coordinate - peut-être via l'environnement? Vous aurez besoin de poster du code, plutôt que juste l'erreur, pour être sûr. –
Pourriez-vous publier le code en plus du message d'erreur? –
que signifie "références"? avez-vous des membres (pas de pointeurs) dans ces classes en tant qu'objets, et pas de références? –