[英]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.