【发布时间】:2014-07-24 20:47:20
【问题描述】:
我有一个类似这样的代码:
class AClass {
public:
struct AStruct { };
AClass(){}
private:
const AStruct m_struct;
};
int main() {
AClass a;
}
error: constructor for 'AClass' must explicitly initialize
the const member 'm_struct'
如果我为 struct AStruct 指定 C++11 默认构造函数,我会得到同样的错误:
struct AStruct {
AStruct() = default;
};
但是,这可以通过编写一个空主体的构造函数来解决:
struct AStruct {
AStruct(){} // fixed
};
为什么我需要指定一个空的构造函数?它不是自动创建的,对结构有公共访问权限吗?
为什么C++11默认构造函数没有解决问题?
【问题讨论】:
-
您对
AStruct和AClass的使用令人难以置信,尤其是因为它们都是类。你就不能想出更好的名字吗? -
您不必必须提供默认构造函数,初始化
const成员的值就足够了 - coliru.stacked-crooked.com/a/aa3bcb77ce7b04eb