我试图创建一个实体系统。 每个实体都有一个组件列表,每个组件都有一个指向父实体的指针。C++指针不完整的类类型是不允许的
========================示例代码:=================== ======
---------------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] - >我越来越指向不完整的类类型是不允许的。 我知道,这是因为Dog头部中的AnimalCare类只是声明了,但没有定义。 - >有没有办法解决这个问题? < -
您需要在'Dog.cpp'中包含'AnimalCare.h'。 – TartanLlama
我已经试过了,它给了我很多错误... – Narcis
这些错误可能会指出你在正确的方向。你也不应该在'AnimalCare.h'中包含'Dog.h':一个前向声明可以。 – TartanLlama