实例化对象(如果未通过引用传递)

时间:2019-05-21 20:45:35

标签: c++ oop

我正在为一堆其他不同的大对象创建一个接口类。由于它们很大,因此我通过引用作为参考。我遇到一些问题。

  1. 如何在保持我的现有对象通过const引用传递的同时具有默认的对象创建功能?就我而言,实际上有n个对象进入接口(n> 4),而对象3-> n依赖于对象1和2。

  2. 是否有更好的方法构造类?当前,需要以完全正确的顺序调用n个对象的Interface(obj1,obj2 ...),而且看起来像是对所需列表初始化的混乱。

class Interface {
public:
    Interface(const Obj1& obj1, 
        const Obj2& obj2,
        const Obj3& obj3,
        const Obj4& obj4) :
        obj1(obj1), 
        obj2(obj2), 
        obj3(obj3), 
        obj4(obj4)
    {}
    // I want this 2nd constructor to create default version of obj3, obj4, etc.
    // Even better if it will be default create any of the object missing,
    // rather than making a separate constructor for each combination of
    // missing objects.
    Interface(const Obj1& obj1, const Obj2& obj2) : obj1(obj1), obj2(obj2) {}  

    // Getters
    mat dat1() const { return obj1.dat1(); }
    mat dat2() const { return obj2.dat2(); }
    // ...


private:
    const Obj1& obj1;
    const Obj2& obj2;
    const Obj3& obj3;
    // ...
};

0 个答案:

没有答案