在main中更改对象的值

时间:2016-03-17 18:26:48

标签: c++ c++11

我在使用main方法修改对象的值时遇到问题。

class player
{
public:

int a=1;
};

当我不在对象中时,如何使用 int a 例如,我想添加10。 当我想打印出+ 10的控制台时,它可以工作

player *test = new player()
//this works , result is 11
cout << test->a + 10 << endl;
//but when i try to do :
(test->a-10); //it compiles but the value doesnt change 

我尝试以几种方式访问​​该值,但没有任何作用,例如。

*(test->a)-10;
(*test->a -10) ;

我如何直接使用此值? 我想把a变成* a但是或者是shared_ptr,但我需要知道是否有办法直接改变它。

这是我的第一篇文章,我搜索了堆栈溢出,找不到与我的问题有关的任何内容。

谢谢

3 个答案:

答案 0 :(得分:0)

(test->a-10);不会改变价值; cout << test->a + 10 << endl;也没有,但你可以在打印时看到变异的值。它实际上并没有改变它的价值。

您需要执行test->a -= 10;之类的操作来更改值。

答案 1 :(得分:0)

也许你应该阅读一本介绍C ++的书。关于这个问题,test->a -= 10应该有效。它相当于test->a = test->a - 10。在此,test->a相当于*(test.a)

答案 2 :(得分:0)

通过执行test->a+10,您不会更改test->a的值。您只打印的10值大于test->a中的值。

正确的方法是test->a += 10test->a = test->a + 10