【发布时间】:2010-05-06 22:20:14
【问题描述】:
class Foo
{
public:
explicit Foo() {}
explicit Foo(Foo&) {}
};
Foo d = Foo();
错误:没有匹配的函数调用 'Foo::Foo(Foo)'
我尝试按照错误提示将Foo(Foo&) 更改为Foo(Foo),AFAIK 不是有效的构造函数,果然我得到了:
错误:无效的构造函数;你的意思可能是“Foo (const Foo&)”
什么给了?我该如何解决这个问题? (顺便说一下,这是在 GCC 上)
【问题讨论】:
-
编译器已经回答了你的问题...
Foo (const Foo&)。Foo d = Foo();正在调用复制构造函数。 -
+1 因为似乎没有人知道答案
-
+1 仅用于 url... foofoofoo-huh :D
-
Brian Roach 是对的,编译器回答了你的问题!您不能让复制构造函数获取
Foo的副本,因为它必须获取一个副本才能进入复制构造函数,这将无限递归......所以它建议了正确的签名。
标签: c++ gcc constructor explicit