代码之家  ›  专栏  ›  技术社区  ›  Ja_cpp

使用从其他类继承的类的对象初始化成员对象

c++
  •  -1
  • Ja_cpp  · 技术社区  · 7 年前

    我有四个不同的类,它们彼此继承,如本例中所示:

    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) . 我该怎么做?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Matthieu Brucher    7 年前

    AS 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()) {}
    

    第二个选项,make e_obj 类的受保护(非公共)成员,并直接传递。

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