我的 C++ 书是这么说的(lippman,c++ Primer,第五版,第 508 页):
如果类 ... 有一个 const 成员,其类型未显式定义默认构造函数,则合成的默认构造函数被定义为已删除and该成员没有类内初始值设定项。 (强调我的)
那么为什么这段代码会产生错误呢?
class Foo {
Foo() { }
};
class Bar {
private:
const Foo foo;
};
int main() {
Bar f; //error: call to implicitly-deleted default constructor of 'Bar'
return 0;
}
上面的规则似乎表明它不应该是一个错误,因为 Foo 确实显式定义了一个默认构造函数。有任何想法吗?
修复你的错误。您需要将 Foo::Foo() 公开。
class Foo
{
public:
Foo() { }
};
否则我确实相信它是私人的。
这是您要找的吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)