【发布时间】:2020-12-01 16:25:54
【问题描述】:
我有这样的代码:
class A{
public:
int b;
};
int main()
{
A a{.b = 5};
}
程序编译。
但是,当我添加另一个类并使 A 继承该类(如下所示)时,它会引发错误“没有匹配的函数用于调用 'A::A()'”(或“没有匹配的构造函数用于初始化A")。
class C{
};
class A: public C{
public:
int b;
};
int main()
{
A a{.b = 5};
}
为什么?
【问题讨论】:
-
将
class A: C{更改为class A: public C{- 聚合初始化要求所有继承都是公开的 -
程序仍然无法编译(同样的错误)。我在最初的帖子中编辑了代码以添加公共(新程序仍然无法编译)。
-
哪个编译器?在一些can't reproduce。从 C++20 开始可以使用指定的初始化。所以请提供编译器平台和编译器选项。
-
与
-std=c++17编译但不是-std=c++11。
标签: c++ inheritance constructor curly-braces