小编Wil*_*l T的帖子

具有继承性的指定初始化器

从 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++

5
推荐指数
0
解决办法
57
查看次数

标签 统计

c++ ×1