您好我是C ++和Stackflow的新手,在尝试push_back指向该类的指针时遇到了C ++访问冲突的问题。
#include<iostream>
#include<vector>
using namespace std;
class A
{
public:
vector<A*> *children;
A() {}
};
int main()
{
A *a=new A();
A *b=new A();
a->children->push_back(b); // access violation
return 0;
}
有没有人可以解决这个问题。谢谢:))
答案 0 :(得分:3)
vector<A*> *children;
children
是指向vector
的指针,而不是vector
。因此a->children->
取消引用未初始化的指针,导致未定义的行为。
您可以尝试
vector<A*> children;
....
a->children.push_back(b);
P.S。请注意没有new
的{{1}} s导致的内存泄漏。