问题:“类型'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)
并且它给出了相同的错误。关于我在这里缺少什么的线索?
答案 0 :(得分:4)
您正在尝试返回函数指针而不是调用函数的结果。
试试这个:
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;
}
答案 1 :(得分:1)
将->contains
更改为->contains(val)
答案 2 :(得分:1)
简单的拼写错误:
if (myLeft) return myLeft->contains;
应该是
if (myLeft) return myLeft->contains(val);
对于使用contains
的其他实例也是如此。
错误告诉您在应该返回bool时尝试返回函数指针。