class Node{
private:
string name;
Node** adjacent;
int adjNum;
public:
Node();
Node(string, int adj_num);
Node(const Node &);
bool addAdjacent(const Node &);
Node** getAdjacents();
string getName();
~Node();
};
bool Node::addAdjacent(const Node &anode){
Node** temp;
temp= new Node*[adjNum+1];
for(int i=0;i<adjNum+1;i++)
temp[i]=adjacent[i];
temp[adjNum]=const_cast<Node *>(&anode);
delete[] adjacent;
adjacent=new Node*[adjNum+1];
adjacent=temp;
delete[] temp;
adjNum++;
return true;
}
int main()
{
Node node1("A",0);
Node node2("B",0);
node1.getName();
node1.addAdjacent(node2);
system("PAUSE");
return 0;
}
當程序涉及到這部分
for(int i=0;i<adjNum+1;i++)
temp[i]=adjacent[i];
它說,訪問衝突讀取位置0xcccccccc。該類必須分配前後相鄰的內存,但我認爲它不能解決這個問題?
問題是?.... – Klaim 2010-03-14 21:05:01
我假設你沒有分配'毗鄰'? – tyranid 2010-03-14 21:06:24
嘗試通過valgrind或調試器運行程序。 – strager 2010-03-14 21:06:37