【发布时间】:2017-03-23 12:40:28
【问题描述】:
我正在尝试为海上导航算法实现一些基本的树结构。 我有这样的东西:
class Point {
float lng;
float lat;
};
class Node {
public:
Node *parent;
std::list<Node> *childern;
Point *point;
Node::Node(Node *prnt, Point *point);
void Node::calcChildrens();
};
Node::Node(Node *prnt, Point *point) {
this->parent = prnt;
this->point = point;
this->childern = nullptr;
}
int counter = 0;
void Node::calcChildrens() {
for (int i = 0; i < 5; i++) {
Point *p = new Point(someValX, someValY);
Node n = Node(this, p);
if (this->childern == NULL) this->childern = new list<Node>;
this->childern->push_back(n);
if (counter < 4) {
counter++;
n.calcChildrens();
}
}
这应该创建 4 层递归树,但只创建一层树。 我认为这是父指针的问题,但我无法意识到真正发生了什么。
【问题讨论】:
-
该代码没有做任何事情。请提供minimal reproducible example 即包含
main以使其成为工作示例 -
还包括一个问题也不错
-
您在
Node::calcChildrens(){中没有匹配的{,请提供工作代码。
标签: c++ recursion constructor tree this