Error - invalid use of incomplète type de / vers l'avant de la déclaration de

Mon problème est assez commun, je sais, mais j'ai cherché et essayé toutes les solutions que j'ai trouvées et ne fonctionne toujours pas. De sorte que toute aide serait grandement appréciée! =)

Merci d'avance!

J'ai cette erreur lors de la compilation :

g++ -ISFML/include -Iclasses/ -W -Wall -Werror   -c -o classes/Object.o classes/Object.cpp
In file included from classes/Core.hh:18:0,
         from classes/Object.hh:4,
         from classes/Object.cpp:1:
classes/MapLink.hh:9:1: error: invalid use of incomplete type struct Object
classes/MapLink.hh:6:7: error: forward declaration of struct Object
In file included from classes/Core.hh:19:0,
         from classes/Object.hh:4,
         from classes/Object.cpp:1:
classes/Player.hh:9:1: error: invalid use of incomplete type struct Object
classes/MapLink.hh:6:7: error: forward declaration of struct Object
make: *** [classes/Object.o] Error 1

Donc en gros, j'ai un principal contenant (main.cpp)

#include "Core.hh"

int        main(void)
{
  ...
}

Voici le fichier d'en-tête contenant tous mes comprend (de Base.hh)

#ifndef __CORE_HH__
# define __CORE_HH__

#include ...
#include "Object.hh"
#include "MapLink.hh"
#include "Player.hh"

class Core
{
  ...
};

#endif /* __CORE_HH__ */

Et ensuite les fichiers qui me causer des ennuis (de l'Objet.hh)

#ifndef __OBJECT_HH__
# define __OBJECT_HH__

#include "Core.hh"

class Object
{
  ...
};

#endif /* __OBJECT_HH__ */

(MapLink.hh)

#ifndef __MAPLINK_H__
# define __MAPLINK_H__

#include "Core.hh"

class Object;

class MapLink : public Object
{
  ...
};

#endif /* __MAPLINK_H__ */

(Joueur.hh)

#ifndef __PLAYER_H__
# define __PLAYER_H__

#include "Core.hh"

class Object;

class Player : public Object
{
  ...
};

#endif /* __PLAYER_H__ */
  • Vous ne devriez pas utiliser des noms réservés pour l'en-tête des gardes, il pourrait conduire à des problèmes tels que stackoverflow.com/questions/3345159
  • Voici une solution à ma propre situation avec les mêmes erreurs dans votre titre, mais peut-être pas pour vous: j'ai dû inclure l'en-tête de la catégorie en vertu de la plainte dans ma rpc, si la classe de la méthode publique qui a été mentionné par une autre classe. J'ai également eu très complexe de dépendances et d'utilisation mixte de l'avant les déclarations et les comprend. Je vais écrire ici plus une remarque qu'une solution puisque vous avez déjà eu un.
InformationsquelleAutor Remi M | 2012-06-27