我有一個
循環冗餘
我的項目中的兩個類之間的循環依賴關係StatusEffect
和BaseCharacter
。正向聲明問題
兩個類都需要知道對方的BaseCharacter
需要存儲一組StatusEffect
S和StatusEffect
需要能夠做到對BaseCharacter
操作。我不認爲有可能消除這種行爲,並保持正常工作。這裏就是我想現在做的事:
基本字符命名空間Game::Character
內部存在和StatusEffect
存在命名空間Game::StatusEffects
內StatusEffects.h,我前宣佈BaseCharacter
像這樣裏面:
namespace Game {
namespace Character {
class BaseCharacter;
}
}
然後在它下面,我有:
namespace Game
{
namespace StatusEffects
{
class StatusEffect
{
public:
virtual void TickCharacter(Game::Character::BaseCharacter* character, int ticks = 1)
{
std::cout << "Name " << character->GetName() << std::endl;
}
protected:
private:
std::string name;
int StatusEffectUID;
};
}
}
然而,這是GIV給我一個編譯器錯誤:
Error 1 error C2027: use of undefined type 'Game::Character::BaseCharacter'
我認爲,因爲我使用的指針,這個前瞻性聲明是好的。還有什麼我需要轉發聲明?我不需要提交聲明整個類的定義嗎?
當你說「循環冗餘」時,你真的指「循環依賴」嗎? – 2011-04-25 09:43:47
啊啊...不知道爲什麼我把循環冗餘 – Megatron 2011-04-25 16:56:24