-1
這是一個來自我正在處理的較大程序的快速示例程序。這是不完美的,但它傳達我有數據消失,指針指向不同的對象
#include <iostream>
#include <vector>
using namespace std;
class Node {
public:
vector<int> state;
Node *parent; //Parent node
//Initial Node
Node(const vector<int> &s) : state(s) {}
//Other Nodes
Node(const vector<int> &state, Node &p) : state(state), parent(&p){ }
};
int main() {
//Initial Node
vector<int> initialState = { 1,2,3 };
Node initialNode(initialState);
vector<Node> listNodes;
listNodes.push_back(initialNode);
while (!listNodes.empty()) { //lisNodes[i].parent->state = {}; 2nd iteration
Node node = listNodes.back(); //node.parent appears to point to node; 2nd iteration
listNodes.erase(listNodes.begin());
for (int i = 0; i < 2; i++) {
vector<int> childState = { i+4,i+5,i+6 };
Node childNode(childState, node);
listNodes.push_back(childNode);
} //Inside for loop lisNodes[i].parent->state = {i+4,i+5,i+6}
}
return 0;
}
在while循環的第二次迭代的問題,父母的內部listNodes
狀態是空
//lisNodes[i].parent->state = {}
而且,parent
在node
似乎指向自己在第二次運行而不是實際的父節點
我不知道爲什麼會發生這種情況或可能的解決辦法。
在發佈的代碼中沒有第二個while循環。 – jpo38
第二次迭代我認爲... – Michael
編輯狀態第二次迭代 –