所以我正在用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;
}
我可能遗漏了一些代码,比如返回等等,但那是因为我有一点时间问这个问题,所以我把那些与我的问题相关的部分。
答案 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”对象的魔药。