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

C++: no matching function call

本文关键字:函数调用 C++      更新时间:2023-10-16

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

你的函数需要签名

void add(Node* parent, Node* node)

请注意,这些是Node*而不是Node。该函数的public重载也是如此

void add(Node* node)

这是显而易见的,因为 1) 您正在与 nullptr 进行比较,2) 您不断用 -> 而不是.取消引用您的变量

CoryKramer 发现了一些错误,我也会添加这个。

您无法比较指针,因此它应该是数据:

else if(node->value > parent->value){
            add(parent->right, node);