4

所以我正在用 C++ 制作一个小游戏,但我遇到了一个问题。我的 player.h 文件中有一个名为 player 的类,在这个类中我有一个名为getPotion(). 我还有一个名为potion. 对于玩家的健康,我有完全相同的东西,并且该函数完美地getHealth()返回了私有静态 int 。playerHealth但显然没有理由,该getPotion函数不会返回药水。我得到一个错误。我还在所有其他文件中包含了头文件。

这是代码:

(不好意思,不知道怎么插入代码,只好写出来了)

player.h(我遇到问题的代码):

class Player{
private:
    static int potions;

public:
    int getPotions();
}

player.cpp(同样是我遇到问题的代码):

int Player::potions;

int Player::getPotions(){
    Player player;
    return player.potions;
}

我可能遗漏了一些代码,例如 return 等,但那是因为我有很少的时间来问这个问题,所以我把与我的问题相关的部分放在了上面。

4

2 回答 2

7

首先,您试图返回一个static类的成员,就好像它是对象的实例化成员一样。静态成员由 引用Class::member,而不是object.member

其次,我不认为你想potions保持静止。静态成员在类的所有对象之间共享。因此,如果玩家 A 有 100 个生命药水,那么玩家 B 将拥有相同的 100 个生命药水。

第三,您在文件Player::potions顶部声明.cpp。我不认为那是你想要的。该potions成员已在您的.h文件中声明。

播放器.h:

class Player
{
    private:
        int potions;

    public:
        int getPotions();
};

播放器.cpp:

int Player::getPotions()
{
    return potions;
}

如果您确实想potions保持静态,请将其更改为:

return Player::potions;
于 2012-10-13T01:42:18.320 回答
1

尝试改变

Player player;
return player.potions;

简单地

return potions;

您正在创建一个新玩家并返回对象的药水,而不是“this”对象的药水。

于 2012-10-13T01:39:12.200 回答