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)
,其中a
和b
是node*
,您希望编译器调用哪个版本?它怎么可能知道?
***.com/questions/2807840/…
copy
的第二个版本没有任何意义。为什么要更改 onode
的值,然后对新值不做任何事情?我想你的意思是void copy(node **onode,node* cnode) *onode=copy(*onode,cnode);
。这也将解决您的错误。
【参考方案1】:
只有根据重载规则,参数不同时,返回类型才能不同
【讨论】:
在哪里可以阅读正式规则?以上是关于c ++错误 - 函数不能重载[重复]的主要内容,如果未能解决你的问题,请参考以下文章