我的應用程序中的類似這樣工作:Creature
幾乎沒有字段Action
s。當這些Action
必須運行時Creature
調用someActionField->do(this)
。行動有方法viod do(Creature* cr)
和關於如何處理這個Creature
的所有信息。C++類互相引用(=>錯誤+字段'...'的類型不完整)
所以,Creature必須有Action
字段並且知道Action
有do
方法。行動必須知道,Creature
有這樣的領域,如:請問,HP等..
我有
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
而且action.h
#include "creature.h"
namespace Core
{
class Action
{
public:
Action();
virtual void _do(Creature* cr);
virtual ~Action();
};
但是在這種情況下出現字段`onDie' has incomplete type
錯誤。如果我將action.h包含到creature.h中 - 我使用'之前的文件'。
是的,我發現那只是你前一秒鐘張貼。 :) 不管怎麼說,還是要謝謝你。 –
關於引用的部分是*錯誤*。引用和指針需要相同的知識。另外,在OP的代碼中沒有參考,只有完整的對象。 – Xeo
@Xeo:這的確措辭很差。 – Mat