(C ++)通过指针递增,或:为什么这不起作用? Pointer-> int = Pointer-> int + 1;

时间:2016-11-23 03:42:31

标签: c++ pointers

我正在学习一些C ++,但显然我的大脑仍处于Java模式。

我尝试增加一个整数变量,它是另一个类的一个类变量,我的活动类中有一个指针作为成员变量。

所以基本结构:

class A{
public:
int i=0;
}

class B{
public:
A* a;
void incrementA();
}

void incrementA(){
a->i=a->i+1;
}

由于某种原因,它仍然返回0,而:

a->i=1;

返回1.

是否有某种机制阻止我通过指针访问变量?

1 个答案:

答案 0 :(得分:0)

void incrementA(){
a->i=a->i+1;
}

此函数不属于类B

您只是定义了一个独立的函数,现在就是如何在类外定义成员函数。

你应该这样定义:

void B::incrementA()
{
  //body
}
  

而a-> i = 1;返回1.

这是因为你将它分配给1

incrementA的实现在语义和语法方面都是正确的。

`a->i+=1;` 

也会这样做。

解决此问题:

线程的创建者说:

嘿大家,很抱歉打扰你,我终于找到了问题:在B的析构函数中,我减少a-> i,我不知道emplace_back()使用析构函数来删除缓冲的对象:(