我試圖創建一個實體系統。 每個實體都有一個組件列表,每個組件都有一個指向父實體的指針。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