我收到上述错误并指向我的add(root,node)调用。这个错误是什么意思?我已经尝试将私有添加移动到顶部,但这也不起作用。而且,它不能因为它在同一类中是私有的,对吗?
class Tree{
public:
Node *root;
Tree(Node *r){
root = r;
}
void add(Node node){
add(root, node);//error here
}
private:
void add(Node parent, Node node){
if(parent == root && root == nullptr){
root = node;
}
if(parent == nullptr){
parent(node->value, nullptr, nullptr);
}
else if(node > parent){
add(parent->right, node);
}
else {
add(parent->left, node);
}
答案 0 :(得分:2)
您的功能需要签名
void add(Node* parent, Node* node)
请注意,这些是Node*
而不是Node
。该函数的public
重载也是如此
void add(Node* node)
这很明显,因为1)您正在与nullptr
进行比较,2)您使用->
代替.
取消引用您的变量
答案 1 :(得分:0)
CoryKramer发现了一些错误,我也会补充一下。
你无法比较指针所以它应该是数据:
else if(node->value > parent->value){
add(parent->right, node);