C ++使用继承时没有匹配的构造函数
C++ No matching constructor when using inheritance
我有这样的代码:
class A{
public:
int b;
};
int main()
{
A a{.b = 5};
}
然后程序编译。
但是,当我添加另一个 class 并让 A 继承 class(如下所示)时,它会抛出错误“没有匹配的函数来调用 'A::A() '”(或“A 的初始化没有匹配的构造函数”)。
class C{
};
class A: public C{
public:
int b;
};
int main()
{
A a{.b = 5};
}
为什么?
您正在使用自 C++20 起可用的功能“Designated initializers”。
我也无法重现这个问题:https://godbolt.org/z/fz3PeP
- 注意 C++17 gcc 和 clang 只是发出警告,msvc 发出错误
- 对于 C++20,这三个都很好(msvc 需要
c++latest
选项)。
- 使用 C++14 时到处都会报错
所以看起来问题只是编译器版本或配置
我有这样的代码:
class A{
public:
int b;
};
int main()
{
A a{.b = 5};
}
然后程序编译。
但是,当我添加另一个 class 并让 A 继承 class(如下所示)时,它会抛出错误“没有匹配的函数来调用 'A::A() '”(或“A 的初始化没有匹配的构造函数”)。
class C{
};
class A: public C{
public:
int b;
};
int main()
{
A a{.b = 5};
}
为什么?
您正在使用自 C++20 起可用的功能“Designated initializers”。
我也无法重现这个问题:https://godbolt.org/z/fz3PeP
- 注意 C++17 gcc 和 clang 只是发出警告,msvc 发出错误
- 对于 C++20,这三个都很好(msvc 需要
c++latest
选项)。 - 使用 C++14 时到处都会报错
所以看起来问题只是编译器版本或配置