dkt*_*t01 3 c++ inheritance constructor virtual-inheritance
我有一个类结构,如下所示:
O
|
A
/ \
B C
\ /
D
|
E
Run Code Online (Sandbox Code Playgroud)
构造函数的工作方式如下(为简洁起见,不包括特定代码,但如果需要,我可以更多地将其充实):
class O {
protected:
O(const string &str) {
//Does stuff with str
};
}
class A : public O {
protected:
A(const string &str) : O(str) { };
}
class B : public virtual A {
protected:
B(const string &str) : A(str) { };
}
class C : public virtual A {
protected:
C(const string &str) : A(str) { };
}
class D : public B, public C {
protected:
D(const string &str) : B(str), C(str) { };
}
class E : public D {
public:
E(const string &str) : D(str) { };
}
Run Code Online (Sandbox Code Playgroud)
类O,A,B,C和D应该是库的一部分,其中类D是我稍后创建的任何类的基类(例如E).D的唯一目的是简化像E这样的类的继承.我的问题是E的构造函数调用A的默认构造函数,除非我显式调用A的参数化构造函数,这违背了D的目的.
这种继承结构最适合我的应用程序,因为C&D类正用于专门化A和B创建的基础结构.C包含A的其他方法.
有没有办法让D处理对A参数化构造函数的调用?理想情况下,我想初始化E以按顺序调用构造函数A,B,C,D,E.字符串参数对于O的上游类非常重要,构造函数B和C需要运行特定的函数.