Я хотел бы включить объект Composed
в свой класс Base
и иметь разные производные классы, имеющие разные конфигурации. Однако класс Composed
требует параметра в конструкторе, и у меня нет контроля над его архитектурой.Как инициализировать объекты-члены, которым требуются параметры конструктора в производных классах?
Компилятор сообщает об ошибке, поскольку параметр для Composed
должен быть передан при инициализации класса Base
. Но я хочу, чтобы он был инициализирован в производных классах. Что мне делать в этом случае?
class Base{
public:
Base(); //Error
protected:
Composed comp;
};
class Composed{
public:
Composed(int id):id(id);
private:
int id;
};
class Derived_1:public Base{
public:
Derived():comp(1234){};
};
class Derived_2:public Base{
public:
Derived():comp(2345){};
};
Должен ли 'Base' даже иметь конструктор? Можно ли сделать это виртуальным? Если он имеет элемент «Составленный», но не инициализирует его, используется ли какой-либо объект «Base»? – Biffen
Делает здравый смысл! Можете ли вы привести пример кода? –
Что? Несущий конструктор? – Biffen