使用从另一个类继承的类的对象初始化成员对象



我有四个不同的类,它们相互继承,就像这个例子一样:

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成为类的受保护(非公共)成员并直接传递它。

代码的其余部分也存在一些问题,请确保继承是公共的,构造函数也是。

最新更新