Les classes dans mon application fonctionnent comme ceci: Creature
a peu de champs avec Action
s. Lorsque ces Action
doivent être exécutés Creature
appels someActionField->do(this)
. Action a la méthode viod do(Creature* cr)
et toutes les informations sur ce qu'il faut faire avec ce Creature
.Les classes C++ se réfèrent les unes aux autres (=> erreur + champ '...' a un type incomplet)
Donc, la créature doit avoir un champ Action
et sachez que Action
a la méthode do
. L'action doit savoir que Creature
a des domaines comme: Est-ce, HP, etc ...
J'ai
creature.h
#include "effect.h"
#include "heedupdate.h"
namespace Core
{
class Action;
class Creature : public NeedUpDate
{
public:
virtual ~Creature();
int HP;
Action onHit;
Action onDie;
// ...
};
}
#endif
Et action.h
#include "creature.h"
namespace Core
{
class Action
{
public:
Action();
virtual void _do(Creature* cr);
virtual ~Action();
};
Mais dans ce cas, l'erreur `onDie' has incomplete type
apparaît. Si j'inclus action.h dans creature.h - j'utilise les fichiers 'avant les uns des autres'.
pleinement déclarée Oui, je pris que juste une seconde avant posté que. :) Merci quand même. –
La partie sur les références est * incorrecte *. Les références et pointeur ont besoin des mêmes connaissances. De plus, il n'y a pas de référence impliquée dans le code OP, seulement des objets complets. – Xeo
@Xeo: c'était très mal formulé en effet. – Mat