Производный класс линкера - это неправильно? - PullRequest
1 голос
/ 18 марта 2010

У нас такая ситуация:


                    Window  Keyboard
                    ^         ^
                    |        /
                    ApplicationWindow 

так

class Window { }
class Keyboard { }
class AppWindow : public Window, public Keyboard { }

Теперь Клавиатура хочет получить доступ к свойству в ApplicationWindow , например, она хочет вызвать свойство getWidth () ApplicationWindow.

Решение, которое у меня есть, - поместить указатель на ApplicationWindow внутри Клавиатура .

Я пытаюсь использовать множественное наследование здесь как Композиция , хотя я знаю, что реальная композиция более сильно поощряется, я хотел попробовать MI.

В любом случае мне нужна обратная ссылка на экземпляр ApplicationWindow из Клавиатура , если я все равно использовал композицию ..

1 Ответ

1 голос
/ 18 марта 2010

Я бы сказал, что было бы намного чище перенести свойство в класс Keyboard.

ApplicationWindow также будет иметь к нему доступ, поскольку ApplicationWindow расширяет Keyboard.

Вы не хотите, чтобы базовый класс обладал какими-либо знаниями о каких-либо подклассах.

...