当我试图推回向量时,为什么存在访问冲突?

时间:2014-10-01 02:13:13

标签: c++

您好我是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;
}

有没有人可以解决这个问题。谢谢:))

1 个答案:

答案 0 :(得分:3)

vector<A*> *children;

children是指向vector的指针,而不是vector。因此a->children->取消引用未初始化的指针,导致未定义的行为。

您可以尝试

vector<A*> children;
....
a->children.push_back(b);

P.S。请注意没有new的{​​{1}} s导致的内存泄漏。