我有一个
循环冗余
我的项目中的两个类之间的循环依赖关系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