Реализация ссылок на объекты многих классов в конструкторе нового класса с параметрами

Как правильно реализовать конструктор класса:

class NewClass
{
public:
    NewClass(Class1 &Name1, Class2 &Name2 )
...
};

если количество различных классов Class1 и Class2 является значительным?

Для небольшого количества классов (Class1 и Class2) можно вручную создать все возможные перегрузки конструктора, а если таких классов много или неизвестное количество?

Этот код используется для реализации расчета гидравлической сети. Например:

class Pipe
{
public:
    Pipe(Tank &pipeEnd1, Node &pipeEnd2 )
...
};

то есть класс трубы и два объекта на ее концах — класс резервуара и класс соединения. Но возможных вариаций много, как минимум 5-6 разных классов.


person DmitryS    schedule 16.03.2019    source источник


Ответы (1)


использовать шаблон


template<typename Class1, typename Class2>
class NewClass //: some_interface
{
public:
    NewClass(Class1 &Name1, Class2 &Name2 )
...
};

Или используйте Class1 и Class2 в качестве интерфейса


class Class1{};
class Class2{};
class Tank:public Class1{};
class Node:public Class2{};

class Pipe
{
public:
    Pipe(Class1 &Name1, Class2 &Name2 )
...
};
person apple apple    schedule 16.03.2019
comment
Спасибо за совет! К сожалению, использование шаблона не очень удобно в других конструкциях кода. Я попытаюсь реализовать Class1 и Class2 как интерфейс. - person DmitryS; 16.03.2019