【发布时间】:2013-07-06 06:48:46
【问题描述】:
我正在尝试为二叉树实现构建一个节点类。这是Node类的头文件:
class Node {
public:
Node();
Node(int value);
void setParent(Node& parent);
void setLeftChild(Node& child);
void setRightChild(Node& child);
void setValue(int value);
void setIndex(int index);
void setHeight(int height);
private:
int value;
Node& parent;
Node& leftChild;
Node& rightChild;
int height;
int index;
};
现在,我想编写上面声明的构造函数 Node(int value)。 如何初始化leftChild、rightChild、父字段?它们也是节点,所以我想在它们上调用默认构造函数,但它似乎不起作用。 Node::Node(int value) : value(value), parent(), leftChild(), rightChild(){ }
编译器说“对'Node'类型的引用需要一个初始化器”
谢谢。
【问题讨论】:
-
引用需要引用一个对象。所以你需要一个对象供他们参考。
-
引用需要绑定到已经存在的对象。
-
所有这些设置器都没有意义(即使它们是可能的,但您永远不能设置引用),只需直接将数据成员公开即可。或者(更好),使构建树的方法成为朋友......另外,如果孩子们是彼此的邻居,那么只需一个指向第一个孩子的指针就足够了,右孩子就在它旁边(
child[0],child[1]) -
谢谢大家!问题解决了。当我应该使用指针时,我仍然使用引用。
标签: c++ binary-tree