gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 18:49:13 26 4
gpt4 key购买 nike

我有一个简单的例子:

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 上失败,并出现错误:

error: either all initializer clauses should be designated or none of them should be

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

是否有任何正确的语法方法可以实现以下目的:

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

或者在这种特殊情况下 Clang 编译器不符合 C++20 标准?我看到this问题及其答案表明确实如此:将指定的初始化程序与非指定的初始化程序混合,这是不允许的。

最佳答案

你不能。目前,还没有办法在还需要初始化基类的花括号初始化列表中使用指定的初始化器。 There's a proposal for it ,但目前显然 C++ 中还没有。

关于c++ - 如何在 g++-10 中结合基类显式构造函数和指定初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67005837/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com