从 C++17 开始,您似乎可以用大括号初始化派生结构。例如:
struct X {
int a;
};
struct Y : public X {
int b;
};
int main() {
Y y{{5}, 6};
return y.a;
}
Run Code Online (Sandbox Code Playgroud)
就我而言,我的结构比这些复杂得多,并且想要使用指定的初始化,如下所示:
Y y{{.a = 5}, .b = 6};
Run Code Online (Sandbox Code Playgroud)
这是否可能以某种方式实现并且我犯了语法错误?为什么这不可能?
编译器抱怨:
either all initializer clauses should be designated or none of them should be
Run Code Online (Sandbox Code Playgroud)
我的解决方法是:
Y y{{.a = 5}};
y.b = 6;
Run Code Online (Sandbox Code Playgroud) c++ ×1