我正在学习一些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.
是否有某种机制阻止我通过指针访问变量?
答案 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()使用析构函数来删除缓冲的对象:(