簡體   English   中英

C++:沒有匹配的函數調用

[英]C++: no matching function call

我收到上述錯誤,它指向我對 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM