c ++错误 - 函数不能重载[重复]

Posted

技术标签:

【中文标题】c ++错误 - 函数不能重载[重复]【英文标题】:c++ error - function cannot be overloaded [duplicate] 【发布时间】:2018-07-23 09:12:24 【问题描述】:

以下是用于复制二叉树的 C++ 代码。我正在尝试重载复制功能。我认为它应该可以工作,因为这两个函数的返回类型不同。

node* copy(node *onode,node *cnode)

    if(root==NULL)
        root=onode;
    if(onode)
    
        cnode=new node;
        cnode->data=onode->data;
        cnode->left=copy(onode->left,cnode->left);
        cnode->right=copy(onode->right,cnode->right);
        return cnode;
    
        return cnode;


void copy(node *onode,node* cnode)

    onode=copy(onode,cnode);

但是,我在编译时遇到以下错误。

错误:'void tree::copy(node*, node*)' 不能被重载 无效副本(节点 onnode,node cnode) 错误:使用'node* tree::copy(node*, node*)' 节点*复制(节点*onode,节点*cnode)

谢谢。

【问题讨论】:

如果我调用copy(a, b),其中abnode*,您希望编译器调用哪个版本?它怎么可能知道? ***.com/questions/2807840/… copy 的第二个版本没有任何意义。为什么要更改 onode 的值,然后对新值不做任何事情?我想你的意思是void copy(node **onode,node* cnode) *onode=copy(*onode,cnode); 。这也将解决您的错误。 【参考方案1】:

只有根据重载规则,参数不同时,返回类型才能不同

【讨论】:

在哪里可以阅读正式规则?

以上是关于c ++错误 - 函数不能重载[重复]的主要内容,如果未能解决你的问题,请参考以下文章

小于运算符不能作为成员函数重载

c++--函数重载

PHP 是不是具有 C#、JAVA、C++ 等函数重载功能 [重复]

php和c,c++的区别是啥?

C函数调用分段错误[重复]

内联成员函数的C ++链接错误[重复]