2014-10-01 20 views
-1

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

有沒有人可以解決這個問題。謝謝:)

回答

3
vector<A*> *children; 

children是一個指向vector,而不是一個vector。因此a->children->解引用未初始化的指針,導致未定義的行爲。

您可以嘗試

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

附:請注意new s沒有delete s引起的內存泄漏。

相關問題