我在使用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,但我需要知道是否有办法直接改变它。
这是我的第一篇文章,我搜索了堆栈溢出,找不到与我的问题有关的任何内容。
谢谢
答案 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 += 10
或test->a = test->a + 10
。