Joh*_*ore 6 c++ inheritance constructor
我有三个继承如下的类:
Class_A
Class_B : public Class_A
Class_C : public Class_B
Run Code Online (Sandbox Code Playgroud)
Class_A 包含一个构造函数:
public: Class_A(const char *name, int kind);
Run Code Online (Sandbox Code Playgroud)
Class_B 不包含该构造函数.
在Class_C我想援引Class_A的构造.像:
Class_C(const char *name, int kind) : Class_A::Class_A(name,kind) {}
问题是我无法添加中间构造函数Class_B,因为Class_B生成的代码每次清理时都会重新生成.所以我不能做任何持久的改变Class_B.不用说,构造函数的上面一行Class_C给出了error: "type 'Class_A' is not a direct base of 'Class_C'".
有没有办法可以调用Class_A子类中的构造函数Class_C,而不需要相同类型的构造函数Class_B?
如果您无法更改生成的代码B,那么您就不走运了,AFAIK。但是,如果该类A包含这样的构造函数,也许您可以添加一个简单的成员函数来设置这两个变量并从C构造函数内部调用它?可能没有那么有效,但至少它有效。