好的,所以,我在一个类中存储一个公共整数,如下所示:
class varglobalness{
public:
int xp;
int lvl;
int xpt;
int hp;
};
并且,在函数内部我试图通过这样做来改变变量:
v.lvl += 1;
v.xpt += rand()%25+25;
v.xp = 0;
v.hp += rand()%25+5;
但是当我这样做时,hp没有改变,xp确实变为0,但是xpt和lvl变成了很多随机数。
任何想法如何在没有这种情况下正确地改变这些整数?
答案 0 :(得分:5)
听起来你没有正确地初始化它们。如果变量未初始化,则它将具有未定义的值。您可以在构造函数中为它们提供初始值:
// varglobalness.h:
class varglobalness {
public:
varglobalness();
// ...
};
// varglobalness.cpp:
varglobalness::varglobalness() : xp(0), lvl(0), xpt(0), hp(0) {}
或者根据您的喜好在其他位置分配初始值。顺便说一下,你应该把这些变量放在有意义和封装的地方,而不是放在一堆随机的全局变量中。
答案 1 :(得分:2)
您是否初始化了变量? C ++中的变量不会自己初始化。
//In your constructor
v.lvl = 1;
v.xpt = 0;
v.xp = 0;
v.hp = 0;