我有四个不同的类,它们相互继承,例如以下示例:
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 */) {}
};
在b_obj
中class A
的初始化中,我需要为其提供参数,并从其父级e_obj
中为其赋予class (C)
。我该怎么办?
答案 0 :(得分:2)
在该阶段已经创建了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
设置为该类的受保护(非公共)成员,并直接将其传递。
其余的代码中也有一些问题,请确保继承是公共的,构造函数也应如此。