【发布时间】:2013-11-26 20:19:53
【问题描述】:
经过一段时间的摆弄并完成了“通过游戏编程的 c++”一书,我被我正在编写的程序所困扰。
情况如下:
Class A
{
public:
A(int x)
protected:
int a;
};
A::A(int x):
a(x)
{}
Class B : public A
Class C : public B
{
public:
C(int x)
};
C::C(int x)
{
A(int x);
}
我可以在C类的构造函数中调用A类的构造函数吗?
据我所知:B 与 A 相关联,C 与 B 相关联,因此当我能够通过派生访问成员变量和函数时,我应该能够从 C 访问类 A 的构造函数。
【问题讨论】:
-
无论如何,这不是真正的代码。它不会编译。不要忘记
A::A()需要一个参数。 -
在这种情况下,我会说你应该试试看。 clang 和 g++ 中的编译器错误消息非常有用。
-
@JensAckou:也许我误解了你的问题。本质上:不,不可能在构造对象之后调用对象的构造函数(并且在进入 C 的 ctor 的主体之前构造 A)。但如果你告诉我们,为什么要调用基类的构造函数,或许我们可以为你提供另一种解决方案。
-
好的,只是我认为直接调用基类的ctor而不是actor的没有优势。如果你创建一个
actor对象,你也需要用一个名字来初始化它。所以无论如何你必须为actor写一个合适的ctor。我只想说,remyabel 的解决方案是最干净的方法,即使 C++ 允许直接调用 BC 的 ctor。
标签: c++ constructor multiple-inheritance