我需要为继承类的构造函数使用默认参数。
class A
{
public:
A(int data)
{
a_data = data;
}
~A(){}
int a_data;
};
class B : public A
{
public:
B(int in, int num = DATA) : A(num)
{
b_data = in;
}
const int DATA = 9;
int b_data;
};
int main()
{
B b(3);
int x = b.a_data;
return 0;
}
我发现here我可以使用子类构造函数的默认参数。但据说我们应该使用全局参数。
但我使用的是班级" B"所以在释放此数据之前调用A构造函数。在结果中我得到了一些垃圾" x"但不是9。
!所以,问题是从另一个,更具体的问题中提取出来的。我有一个基本的课程"对象"。有些孩子喜欢" Mob"或"播放器"。对象内部有一个物理(Box2D)对象。 Certanly,除了一些参数之外,创建该物理主体的所有动作都是相同的。因此,我将algorythm存储在" Object" construtor,并将所有需要的数据放在子类中。但是,在创建一个" Object"之前,我无法获得这些数据。这需要数据。
Here是一个依赖类的解决方案示例。
我将不胜感激。
答案 0 :(得分:1)
答案 1 :(得分:0)
您想要的是为A
A(int data = 9)
所以B
可以默认创建A
作为参数的9
,
B(int in){...} // here the A part is constructed with 9
由于B
的构造函数首先尝试构造基本部分(在本例中为A
),并且只有在初始化了{的其余部分后,您的实际代码才会执行您所期望的操作。 {1}}。