我有四个不同的类,它们相互继承,就像这个例子一样:
class E {};
class B
{
B(E e_obj) /* stuff */ {}
// stuff
};
class D
{
E e_obj;
public:
D();
};
class C : public D
{
C(Parm_t param) /* stuff */ {}
// stuff
};
class A : public C
{
B b_obj;
public:
A(Parm_t param): C(param), b_obj(/* what to put here */) {}
};
在 class A
中初始化b_obj
时,我需要给它参数并从它的父class (C)
e_obj
。我该怎么做?
由于在该阶段已经创建了D
,因此添加一个访问器:
class D
{
E e_obj;
public:
D();
protected:
const E& get() const {return e_obj;}
};
并在以下之后使用它:
A(Parm_t param): C(param), b_obj(get()) {}
第二种选择,使e_obj
成为类的受保护(非公共)成员并直接传递它。
代码的其余部分也存在一些问题,请确保继承是公共的,构造函数也是。