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

时间:2019-01-22 20:11:04

标签: c++

我有四个不同的类,它们相互继承,例如以下示例:

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_objclass A的初始化中,我需要为其提供参数,并从其父级e_obj中为其赋予class (C)。我该怎么办?

1 个答案:

答案 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设置为该类的受保护(非公共)成员,并直接将其传递。

其余的代码中也有一些问题,请确保继承是公共的,构造函数也应如此。