C++ 包含指向另一个对象的指针的对象向量C++;
我有一个指向相同类型父节点的指针的类state\tC++ 包含指向另一个对象的指针的对象向量C++;,c++,pointers,search,vector,C++,Pointers,Search,Vector,我有一个指向相同类型父节点的指针的类state\t class state_t{ public : int pos_bus, cost; map<int, vector<int>> kids_waiting; vector<int> kids_bus; state_t* parent; int g, f; state_t(int _pos_bus, ve
class state_t{
public :
int pos_bus, cost;
map<int, vector<int>> kids_waiting;
vector<int> kids_bus;
state_t* parent;
int g, f;
state_t(int _pos_bus, vector<int> _kids_bus, map<int, vector<int>> _kids_waiting) {
pos_bus = _pos_bus;
kids_bus = _kids_bus;
kids_waiting = _kids_waiting;
g = 0;
f = 0;
};
state_t() {};
state_t(state_t *parent_){
parent = parent_;
pos_bus = parent_->pos_bus;
kids_bus = parent_->kids_bus;
kids_waiting = parent_->kids_waiting;
f = parent_->f;
g = parent_->g;
};
在第一个示例中,我得到了期望值:
CHILD NODE: <1, < >, [2]: < 3 4 > >
f: 0g: 8
PARENT NODE: <0, < >, [2]: < 3 4 > >
子节点:,[2]:<34>
f:0g:8
父节点:,[2]:<3 4>>
在中,第二个父项与子项相同:
CHILD NODE: <0, < >, >
f: 0g: 92
PARENT NODE: <0, < >, >
f: 0g: 92
子节点:,>
f:0g:92
父节点:,>
f:0g:92
您的第一个和第二个构造函数根本没有初始化父指针,因此其值是不确定的。这些构造函数应该将parent
设置为NULL
/nullptr
,然后在调用parent->print()之前需要检查NULL
/nullptr
)
您应该在Gdb中运行它,并查看在for循环中发生了什么。您可以使用监视当前值
跟踪当前值的变化
CHILD NODE: <0, < >, >
f: 0g: 92
PARENT NODE: <0, < >, >
f: 0g: 92