Это немного сложно объяснить, но я сделаю все возможное, чтобы объяснить это.
Я создаю Gui API для игр, и у него есть Темы.
Сначала яобъясните, как работают виджеты.
Кнопка, например, наследуется от виджета.Темы работают аналогично.
ButtonTheme наследуется от WidgetTheme.
Внутри каждого класса виджетов есть экземпляр соответствующей ему Темы.
Класс виджетов имеет:
private:
static WidgetTheme widgetTheme;
public:
static WidgetTheme& getWidgetTheme();
класс кнопок имеет:
private:
static ButtonTheme buttonTheme;
public:
static ButtonTheme& getButtonTheme();
конструктор Widget, строит себя из своей темы, например:
Widget()
{
setFont(getWidgetTheme().getFont());
}
Button, унаследованный от WidgetTheme, должен делать то же самоепотому что внутренний виджет не будет знать, как создать из ButtonTheme, поэтому моя кнопка в конечном итоге должна сделать:
Button()
{
setFont(getButtonTheme().getFont());
setButtonPadding(getButtonTheme().getButtonPadding());
}
Вот где моя проблема.Это действительно неправильно, что я должен восстановить все WidgetTheme и перенаправить их на параметры ButtonTheme для Widget.Если я этого не сделаю, SuperButton унаследует стили Button, которые также унаследуют стили Widget, но я хочу, чтобы SuperButton использовал свои версии ButtonTheme и WidgetTheme, потому что SuperButtonTheme наследовал бы от ButtonTheme и WidgetTheme.
Есть ли способ, которым я мог бы изменить это так, чтобы конструктор должен был только установить части темы, которую он приносит, и не должен устанавливать те из своих родителей?
Спасибо