c++ - 在 C++ 中检查是否存在时出错

标签 c++ pointers

<分区>

问题:“bool (BST::Node::)(int)”类型的参数与“bool”不匹配是什么意思 "什么意思?


信息:

我正在做一个制作二叉搜索树的作业。虽然我的“包含”函数没有编译:

    bool contains(Item val)
    {
        if(val == myItem) return true;
        if(val < myItem)
            if (myLeft) return myLeft->contains;
            else return false;
        if(myRight) return myRight->contains;
        return false;

    }

我正在使用 if(myLeft)if(myRight) 在我跟随节点之前检查是否存在。但是我收到以下错误消息:

BST.h:100:38: error: argument of type ‘bool (BST<int>::Node::)(int)’ does not match ‘bool’
BST.h:102:32: error: argument of type ‘bool (BST<int>::Node::)(int)’ does not match ‘bool’

第 100 和 102 行包含 if(myLeft) 和 if(myRight)。令人讨厌的是,我的插入函数工作正常:

    void insert(Item val)

    {
        if(val < myItem)

            if (myLeft)

                myLeft->insert(val);

            else

                myLeft = new Node(val);

        else if(val > myItem)

            if (myRight)

                myRight->insert(val);

            else

                myRight = new Node(val);
        else throw Exception("Insert()","Can't add duplicate values");

    }

但我还是做了同样的事情。我试图更改它以检查 NULL,所以它变成了 if(myLeft!=NULL) 并且它给出了相同的错误。关于我在这里遗漏了什么的任何线索?

最佳答案

您试图返回函数指针而不是调用函数的结果。

试试这个:

bool contains(Item val)
{
    if(val == myItem) return true;
    if(val < myItem)
        if (myLeft) return myLeft->contains(val);
        else return false;
    if(myRight) return myRight->contains(val);
    return false;

}

关于c++ - 在 C++ 中检查是否存在时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8125484/

相关文章:

c++ - 比较两种声明数组的方式

c - 如何在Linux中读取和更改内存中的值?

c - 如何在 C 中用 extern 声明一个指针?

c++ - 在导致 undefined symbol 错误的示例代码上使用 Boost 库?

c++ - 如何使用带有指针的数组?

c++ - 运算符 "<<"重载返回类型

c - 为什么编译器不生成错误 "lvalue required"?

c++ - DirectShow 视频剪辑

c++ - 无法在 MingW 上静态链接 FreeImage 3.15.4

int 的转换,unsigned int 用于 c 中的指针