我正在为一堆其他不同的大对象创建一个接口类。由于它们很大,因此我通过引用作为参考。我遇到一些问题。
如何在保持我的现有对象通过const引用传递的同时具有默认的对象创建功能?就我而言,实际上有n个对象进入接口(n> 4),而对象3-> n依赖于对象1和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;
// ...
};