我试图创建一个实体系统。 每个实体都有一个组件列表,每个组件都有一个指向父实体的指针。
========================示例代码:==================== =====
---------------Dog.h--------------------
#include <string>
class AnimalCare;
class Dog
{
public:
Dog(AnimalCare* parent);
std::string GetParentName();
void Feed(void*);
private:
AnimalCare* g_parent;
}
----------------------------------------
----------------Dog.cpp-----------------
#include "Dog.h"
Dog::Dog(AnimalCare* parent){
g_parent =parent;
}
void Dog::Feed(void* food){
//TODO: Feeding
}
std::string Dog::GetParentName(){
[1]return parent->GetName();
}
----------------------------------------
---------------AnimalCare.h-------------
#include "Dog.h"
class AnimalCare{
public:
AnimalCare(std::string name);
std::string GetName();
void InitDog();
private:
std:string g_name;
Dog* g_dog;
};
----------------------------------------
--------------AnimalCare.cpp------------
#include "AnimalCare.h"
AnimalCare::AnimalCare(std::string name){
g_name =name;}
std:string AnimalCare::GetName(){
return g_name;}
void AnimalCare::InitDog(){
g_dog = new Dog(this);}
=============================================== =============
[1] - &gt;我不允许获取指向不完整类类型的指针。 我知道,这是因为Dog header中的AnimalCare类只是声明但未定义。 - &gt;有办法解决这个问题吗?&lt; -
答案 0 :(得分:2)
你需要将它添加到Dog.cpp:
#include "AnimalCare.h"
另外,你错过了;在你的Dog声明之后,它应该是:
class Dog
{
public:
Dog(AnimalCare* parent);
std::string GetParentName();
void Feed(void*);
private:
AnimalCare* g_parent;
};