c++ - 是否有可能调用一个父类(super class)的构造函数,两个类远离 C++ 中的当前类

标签 c++ inheritance constructor

我有三个继承如下的类:

Class_A  
Class_B : public Class_A  
Class_C : public Class_B

Class_A 包含一个构造函数:

public: Class_A(const char *name, int kind);

Class_B 不包含该构造函数。

Class_C 中,我希望调用 Class_A 的构造函数。像这样的东西:
Class_C(const char *name, int kind) : Class_A::Class_A(name,kind) {}

问题是我无法向 Class_B 添加中间构造函数,因为 Class_B 是生成的代码,每次我 make clean 时都会重新生成。所以我无法对 Class_B 进行任何持久更改。不用说,Class_C 中构造函数的上述行给出了错误:“type 'Class_A' is not a direct base of 'Class_C'”。

有没有一种方法可以在子类 Class_C 中调用 Class_A 的构造函数,而无需在 Class_B 中调用相同类型的构造函数?

最佳答案

如果您不能更改生成 B 的代码,那么您就不走运了,AFAIK。但是如果 A 类包含这样一个构造函数,也许您可​​以添加一个简单的成员函数来设置这两个变量并从 C 构造函数内部调用它?可能没有它得到的那么高效,但至少它有效。

关于c++ - 是否有可能调用一个父类(super class)的构造函数,两个类远离 C++ 中的当前类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5961771/

相关文章:

oop - 强制派生类调用 MATLAB 中的基函数?

java - 扩展内部类和扩展嵌套类之间的区别?

来自构造函数的 C++ 虚函数

c++ - 模板构造函数继承的标准符合语法是什么?

类静态 constexpr 的 C++ 链接器错误

c++ - C++中*&类型的函数参数是什么意思?

c# - 覆盖属性的访问器

c++ - 在贪吃蛇游戏中使用 SDL_FillRect

c++ - 不能将 XMVECTOR 与 float 相乘

c++ - 'empty' 构造函数或析构函数会做与生成的相同的事情吗?