Создание объектов, если они не переданы по ссылке - PullRequest
0 голосов
/ 21 мая 2019

Я создаю интерфейсный класс для множества других больших объектов.Поскольку они большие, я передаю их по ссылке.У меня возникли некоторые проблемы.

  1. Как создать объект по умолчанию, сохраняя при этом передачу по константной ссылке для объектов, которые у меня есть?В моем случае на самом деле в интерфейс входят n объектов (n> 4), а объекты 3-> n зависят от объектов 1 и 2.

  2. Есть ли лучшеспособ построить класс?В настоящее время необходимо вызвать интерфейс (obj1, obj2 ...) с n объектами в точно правильном порядке, и, кроме того, он выглядит как беспорядок с необходимой инициализацией списка.

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;
    // ...
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...