У меня есть 2 производных класса, в одном из этих классов я хочу настроить реализацию вложенного класса, который находится в базе. В другом я просто хочу использовать базовый объект.
Я столкнулся с проблемой, которую можно продемонстрировать на следующем примере:
class Widget
{
public:
class Settings
{
// ...
}
// ...
protected:
Settings m_settings;
}
// -------------------------------------------------------
class LimitedWidget : public Widget
{
// ...
// the settings are the same, so using base m_settings object.
}
// -------------------------------------------------------
class SpecialWidget : public Widget
{
public:
class Settings : public Widget::Settings
{
// customize the settings for SpecialWidget
}
// ...
protected:
Settings m_settings; // now I must declare another m_settings object.
}
О, это избыточно. Мы уже определили m_settings
в нашем базовом классе Widget
, но я не хочу использовать это во всех производных классах (например, SpecialWidget
). Я не могу сделать m_settings
закрытым в базовом классе, потому что я хочу использовать этот объект в LimitedWidget
. Но я не хочу 2 объекта настроек, один из которых бесполезен, в SpecialWidget
.
Есть ли решение?
Спасибо, что уделили время.