Я ищу полезный пример множественного наследования в C++ и нашел пример для Window-creation здесь: A use for multiple inheritance? и немного изменил его. Он концептуально выглядит следующим образом:может ли абстрактный класс наследовать от «нормального» класса?
class Window
class Skinable // abstract
class Draggable // abstract
class DraggableSkinnableWindow : Window, Draggable, Skinnable
Я думаю, что это хороший пример, где ИМ имеет смысл. Так как не имеет смысла реализовывать класс Skinable, он должен быть определен абстрактным.
Теперь: Как это будет выглядеть, если я не буду использовать концепцию МИ. я бы использовал простую иерархическую структуру, как это:
class Window
class Dragable : public Window
class Skinable : public Dragable
class DraggableSkinnableWindow : Skinnable
Я все еще хочу Dragable и Skinable быть абстрактно, как хорошо, но это вообще возможно? Является ли второй пример хорошим решением для одного и того же контекста, но не с использованием ИИ?
Спасибо заранее!
Да, абстрактные классы могут даже содержать полные реализации, и все же быть абстрактными. Вы определяете абстракцию, которую вы считаете неполной, но неполной не означает полностью лишенной субстанции. – StoryTeller
Ваша идея с одним наследством звучит концептуально неправильно. Я могу представить перетаскиваемые элементы GUI, кроме целых окон (то же самое для скинов) – deviantfan
Если язык не предоставляет MI, это обычно решается с помощью реализации интерфейсов. –