也许标题不合适。
我有两个班级“玩家”和“升级”
但我需要Player类中的一个方法,该方法使用指向Upgrade类的指针
如果我尝试编译它,我得到'升级'尚未声明。 我给出一个示例代码。请注意,我不能只切换两个类的位置,因为升级还有一些方法有指针播放器
class Player{
string Name;
getUpgrade(Upgrade *); // It's a prototype
};
class Upgrade{
double Upgradeusec;
somePlayerData(Player *); // It's a prototype
};
PD:我一直在寻找这个,但没有结果。
注意:这只是一个示例代码,因为实际代码很大
答案 0 :(得分:3)
您需要在Player类的定义之前转发声明Upgrade; e.g。
class Upgrade;
class Player { ... };
class Upgrade { ... };
这当然意味着两个类之间的紧密耦合,根据情况可能是不合需要的。
答案 1 :(得分:2)
你可以转发声明它。
在包含播放器类代码的文件中,只需在所有#includes
和#defines
class Upgrade;
class Player
{
//the definition of the Player class
}
编译器将遵守此前瞻性声明,并将继续进行而不会抱怨。
答案 2 :(得分:1)
What is forward declaration in c++?
只需在代码中添加一个前向声明:
class Upgrade; //forward declaration
class Player{
string Name;
getUpgrade(Upgrade *); // It's a prototype
};
class Upgrade{
double Upgradeusec;
somePlayerData(Player *); // It's a prototype
}
答案 3 :(得分:0)
您需要转发声明。 http://en.wikipedia.org/wiki/Forward_declaration 当可以使用不完整类型时,C ++有特定的复杂规则。
class Upgrade; //<<<< add this line.
Class Player{
string Name;
getUpgrade(Upgrade); // It's a prototype
};
Class Upgrade{
double Upgradeusec;
somePlayerData(Player); // It's a prototype
};