[c++]попытка эмуляции queryInterface через множественное наследование
class DefaultIAbstractActor1GetterImpl : virtual public IAbstractActor1, virtual public BaseObject
с одним интерфейсом помогло, но у меня подозрение что с 2 уже не пройдет этот финт.
Оставить комментарий
elenangel
Хочется такого:Есть базовый класс-интерфейс IAbstractInterface без ничего (только виртуальный деструктор от него наследуются все остальные интерфейсы.
Под каждый интерфейс делается интерфейс-геттер, имеющий одну виртуальную абстрактную функцию virtual %InterfaceName% *get%InterfaceName% это можно сделать например макросом или скриптом, далее все-все геттеры наследуются вместе в один жирный общий интерфейс IInterface. Для него делается дефолтная реализация, которая делает return 0; в каждой функции для каждого типа интерфейса-геттера. Еще для каждого геттера делается класс с дефолтной реализацией return this.
Далее я беру некоторый интерфейс (ISampleSupportedInterface реализую его в классе, наследую этот класс от жирного абстрактного интерфейса и от дефолтной реализации геттера для поддерживаемого интерфейса. Теперь мой класс на getISomeInterface возвращает 0, а на getISampleSupportedInterface возвращает this.
При практической реализации этой идеи я ожидаемо получаю error: no unique final overrider. Можно ли как-то это обойти?
Вот пример реализации: