在代码中使用在其他类中声明的类

时间:2013-08-21 04:04:08

标签: c++ class

也许标题不合适。

我有两个班级“玩家”和“升级”

  • 播放器在升级前声明。

但我需要Player类中的一个方法,该方法使用指向Upgrade类的指针

如果我尝试编译它,我得到'升级'尚未声明。 我给出一个示例代码。请注意,我不能只切换两个类的位置,因为升级还有一些方法有指针播放器

class Player{
    string Name;
    getUpgrade(Upgrade *); // It's a prototype
};
class Upgrade{
    double Upgradeusec;
    somePlayerData(Player *); // It's a prototype
};
PD:我一直在寻找这个,但没有结果。

注意:这只是一个示例代码,因为实际代码很大

4 个答案:

答案 0 :(得分:3)

您需要在Player类的定义之前转发声明Up​​grade; 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
};