【发布时间】:2019-11-15 14:47:35
【问题描述】:
考虑一下这段代码。
class A{
public:
A(): a(10) {}
int a ;
};
class B{
public:
B() : A::A(){}
A a;
};
编译器给了我一个警告
error: type 'A' is not a direct base of 'B'|
我理解错误,但我如何在 B 的构造函数中调用 A 的构造函数。任何替代方案。
Ik 这是一个隐式调用,但我需要一个显式调用。正如编译器所说。
warning: 'B::a' should be initialized in the member initialization list [-Weffc++]|
附: - 不推荐继承。我做不到。
【问题讨论】:
-
as 构造函数已被隐式调用 -
B() : a() {}? -
xy problem 为什么你认为需要调用
A的构造函数? -
@foreknownas_463035818 这不是 XY 问题。我启用了编译器警告,它说要在 B 的初始化列表中对其进行初始化。我发现这很烦人。
-
@Problematic "_ 我已启用编译器警告,它说要在 B 的初始化列表中对其进行初始化。_" 1) 我觉得您误解了警告。如果您因为警告而提出此类问题,请在您的问题中提供警告,我们将帮助您解决警告。 2)您的此类评论表明,这实际上是一个 XY 问题。
标签: c++ class constructor