1
考虑下面的代码的集合的类:一类的聚合初始化该私人继承在C++ 11
struct base
{
int x, y, z;
};
struct derived : private base
{
using base::base;
};
int main(int argc, const char *argv[])
{
base b{1, 2, 3}; // Allowed
derived d{1, 2, 3}; // Not allowed
}
线derived d{1, 2, 3};
使我的编译器(锵3.3)失败,错误“不匹配的构造进行初始化'派生'“。为什么是这样?有什么办法通过聚合初始化来初始化derived
?
啊,我现在觉得自己像个白痴。我猜唯一的解决方法是将一个构造函数添加到'derived',它需要一个initializer_list并用它构造'base'? – robinjam
@robinjam:查看编辑答案。 –