如何在 g++-10 中结合基类显式构造函数和指定初始化?

深渊7

我有一个简单的例子:

struct A {
    explicit A(int a) : a(a) {}
 protected:
    int a;
};
struct B : public A { int b = 0, c = 0; };

// Attempts to get the code compiled:
B b1 { A(1),   .c = 2 };  // fine with clang-11
B b2 { A{1},   .c = 2 };
B b3 { .A{1},  .c = 2 };
B b4 { {1},    .c = 2 };
B b5 { .a = 1, .c = 2 };

第一个示例失败g++10 -std=c++20并出现错误:

错误:要么应该指定所有初始化器子句,要么不应该指定它们中的任何一个

虽然在 clang++-11 上没问题。

是否有任何适当的语法方法来实现以下目标:

  • 使用显式构造函数初始化基对象,
  • 部分初始化结构。

或者在这种特殊情况下,Clang 编译器是否不符合 C++20 标准?我看到了这个问题,它的回答表明是这样的:mixing designated initializers with non-designated initializers, which is not allowed.

尼可波拉斯

你不能。目前,还没有办法在需要初始化基类的花括号初始化器列表中使用指定的初始化器。有一个提案,但目前显然不在 C++ 中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在SoftLayer上设置10G和20G网络接口速度

来自分类Dev

如何在派生类构造函数中初始化基类成员变量?

来自分类Dev

如何在不显式调用显式构造函数的情况下初始化映射?

来自分类Dev

如何在派生构造函数中初始化从基类继承的向量

来自分类Dev

如何在HP Pavilion G6上双重启动Windows 10和Ubuntu?

来自分类Dev

如何在Oracle 10g中的GROUP BY子句中获取不在中的其他列?

来自分类Java

如何在Oracle 10g Java VM中设置并发调用

来自分类Dev

如何在 Oracle 数据库 10g 中编写“IF UPDATING”触发器?

来自分类Dev

如何在同一张表中插入多行-Oracle 10g

来自分类Dev

如何在Oracle 10G中更改列的长度(以字符为单位)?

来自分类Dev

如何在Oracle 10g中获取被称为触发器的表字段?

来自分类Dev

如何在 Ubuntu 18.04 上安装 g++ 10?

来自分类Dev

如何在 Windows 10 上获得 g++ 7+?

来自分类Dev

继承和复制构造函数-如何从基类初始化私有字段?

来自分类Dev

如何避免在基类初始化器中调用默认构造函数?

来自分类Dev

如何在oracle 10g数据库中插入并返回使用存储过程生成的ID

来自分类Dev

如何在定义附近使用显式的长度/值构造函数初始化向量成员变量?

来自分类Dev

如何为显式重载的构造函数启用副本初始化?

来自分类Dev

如何在C ++(G ++)中的Class中初始化字符串

来自分类Dev

如何在类构造函数中初始化匿名结构?

来自分类Java

如何在空类构造函数中初始化List <E>?

来自分类Dev

如何在类的构造函数中初始化对象的2D向量?(C ++)

来自分类Java

当类构造函数具有参数时,如何在Java中初始化数组?

来自分类Java

如何在工厂方法中初始化具有多个参数构造函数的类

来自分类Dev

如何在类构造函数中初始化动态分配的数组

来自分类Dev

如何在构造函数中初始化char

来自分类Dev

如何在默认构造函数中初始化数组?

来自分类Java

如何在构造函数中初始化对象数组?

来自分类Java

如何在构造函数中初始化列表?

Related 相关文章

  1. 1

    如何在SoftLayer上设置10G和20G网络接口速度

  2. 2

    如何在派生类构造函数中初始化基类成员变量?

  3. 3

    如何在不显式调用显式构造函数的情况下初始化映射?

  4. 4

    如何在派生构造函数中初始化从基类继承的向量

  5. 5

    如何在HP Pavilion G6上双重启动Windows 10和Ubuntu?

  6. 6

    如何在Oracle 10g中的GROUP BY子句中获取不在中的其他列?

  7. 7

    如何在Oracle 10g Java VM中设置并发调用

  8. 8

    如何在 Oracle 数据库 10g 中编写“IF UPDATING”触发器?

  9. 9

    如何在同一张表中插入多行-Oracle 10g

  10. 10

    如何在Oracle 10G中更改列的长度(以字符为单位)?

  11. 11

    如何在Oracle 10g中获取被称为触发器的表字段?

  12. 12

    如何在 Ubuntu 18.04 上安装 g++ 10?

  13. 13

    如何在 Windows 10 上获得 g++ 7+?

  14. 14

    继承和复制构造函数-如何从基类初始化私有字段?

  15. 15

    如何避免在基类初始化器中调用默认构造函数?

  16. 16

    如何在oracle 10g数据库中插入并返回使用存储过程生成的ID

  17. 17

    如何在定义附近使用显式的长度/值构造函数初始化向量成员变量?

  18. 18

    如何为显式重载的构造函数启用副本初始化?

  19. 19

    如何在C ++(G ++)中的Class中初始化字符串

  20. 20

    如何在类构造函数中初始化匿名结构?

  21. 21

    如何在空类构造函数中初始化List <E>?

  22. 22

    如何在类的构造函数中初始化对象的2D向量?(C ++)

  23. 23

    当类构造函数具有参数时,如何在Java中初始化数组?

  24. 24

    如何在工厂方法中初始化具有多个参数构造函数的类

  25. 25

    如何在类构造函数中初始化动态分配的数组

  26. 26

    如何在构造函数中初始化char

  27. 27

    如何在默认构造函数中初始化数组?

  28. 28

    如何在构造函数中初始化对象数组?

  29. 29

    如何在构造函数中初始化列表?

热门标签

归档