调用函数从类中返回私有变量不起作用

时间:2012-10-13 01:36:11

标签: c++

所以我正在用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;
}

我可能遗漏了一些代码,比如返回等等,但那是因为我有一点时间问这个问题,所以我把那些与我的问题相关的部分。

2 个答案:

答案 0 :(得分:6)

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

其次,我认为你不希望potions是静态的。静态成员在类的所有对象之间共享。因此,如果玩家A拥有100个健康药水,那么玩家B将获得相同的100个健康药水。

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

player.h:

class Player
{
    private:
        int potions;

    public:
        int getPotions();
};

player.cpp:

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

如果您希望potions是静态的,请将其更改为:

return Player::potions;

答案 1 :(得分:1)

尝试更改

Player player;
return player.potions;

简单地

return potions;

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