2011-05-01 23 views
0

好了整数,所以,我存储在一个类中的公共整数,像这样:改变类C++

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; 

当我做到这一点,虽然,惠普并没有改变,XP中更改为0,但XPT和拉特改变了很多的随机数。

任何想法如何正确地改变这些整数没有这种情况发生?

+0

什么是“空白”? – 2011-05-01 01:07:09

+2

你能给出一些可以证明问题的完整的,可编译的代码吗? “虚空内”是什么意思? (我有洞穴中的心理图像...) – 2011-05-01 01:07:25

+1

你得到随机数,因为你分配随机数..... – 2011-05-01 01:07:31

回答

2

你初始化了变量吗? C++中的变量不会自行初始化。

//In your constructor 
v.lvl = 1; 
v.xpt = 0; 
v.xp = 0; 
v.hp = 0; 
+1

您是否错过了他将所有四个值赋值的问题部分? – 2011-05-01 01:09:42

+3

@Tomalak:他没有。他有问题的使用'+ =' – 2011-05-01 01:10:51

+0

在int main()我有: – Pebsie 2011-05-01 10:31:53

5

听起来像你没有正确地初始化它们。如果一个变量未初始化,它将有一个未定义的值。你可以在构造函数中给它们初始值:

// varglobalness.h: 
class varglobalness { 
public: 

    varglobalness(); 

    // ... 

}; 

// varglobalness.cpp: 
varglobalness::varglobalness() : xp(0), lvl(0), xpt(0), hp(0) {} 

或者根据自己的喜好在别处赋予初始值。顺便说一句,你应该把这些变量放在有意义和封装的地方,而不是放在一堆随机的全局变量中。

+0

使用这个,我得到一个错误:在''''令牌之前预期的非限定id – Pebsie 2011-05-01 10:34:09

+1

@Pebsie:编辑给出更多关于如何正确设置的更多细节。 – 2011-05-01 16:09:36