C ++:没有匹配的函数调用

时间:2015-06-10 20:24:04

标签: c++ tree

我收到上述错误并指向我的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);
            }

2 个答案:

答案 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);