Войти
ПрограммированиеФорумОбщее

Крестопроблемы. COM интерфейсы, множественное наследование + WRL (2 стр)

Страницы: 1 2
#15
21:02, 19 мар. 2019

MrShoor
> SOLID запрещает наследование в ООП? Или что там нарушается?
Я конкретно про Принцип разделения интерфейса
MrShoor
> Ну интерфейсы уже унаследованы. Так что этот совет тут не поможет.
Это special case, который оговаривается в стандарте.

#16
21:03, 19 мар. 2019

MrShoor, можешь привести пример, когда тебе нужно наследовать интерфейсы?

#17
21:33, 19 мар. 2019

Мизраэль
> MrShoor, можешь привести пример, когда тебе нужно наследовать интерфейсы?
У меня есть внешнее API, которое уже спроектировано с такой декларацией и наследованием. Я не могу менять это API. Мне нужно сделать на своей стороне имплементацию этого API.

#18
21:56, 19 мар. 2019

MrShoor
> Можешь показать на моём примере что ты имеешь ввиду?
  Твой код у меня не собирается, так как нужен компилятор поновее.
Предложенная мной идея это один из вариантов решения проблемы
множественного наследования классов, но его еще нужно отладить.

#19
23:58, 19 мар. 2019

равен
> Твой код у меня не собирается, так как нужен компилятор поновее.
Я не знаю какой у тебя компилятор, но вот держи:
https://rextester.com/JMTL52709

#20
1:47, 20 мар. 2019

Используй ATL, там эти проблемы решены.

#21
2:25, 20 мар. 2019

MrShoor
> Я не знаю какой у тебя компилятор, но вот держи:
  В VS 2008 не собирается. Хотя я вижу что ты уже сам понял как сделать.
Только непонятно для чего нужен такой сложный код.

  Я предлагал сделать как вот здесь:
https://gamedev.ru/flame/forum/?id=230576&page=8&m=4918054#m109
https://gamedev.ru/flame/forum/?id=230576&page=8&m=4919506#m113

  Там тоже есть наследование и шаблоны и через классы напрямую не работает
(хотя по идее должно работать), а вот через ссылки и указатель на базовый класс
вполне собирается контейнер STL полный разных классов.

  Смысл идеи - множественное наследование заменяется одним контейнером STL
содержащим в себе произвольные классы. Так эмулируется множественное наследование
классов, которое не всегда поддерживается компилятором.

#22
2:39, 20 мар. 2019

равен
> Хотя я вижу что ты уже сам понял как сделать.
Я не понял как такое сделать через WRL.

> Только непонятно для чего нужен такой сложный код.
Изначально просто есть интерфейсы (и это внутреннее API, которое поменять нельзя). Нужно написать к ним реализацию.

#23
5:00, 22 мар. 2019

MrShoor
> Что значит не совместимо? Вот вполне себе рабочий COM код
велосипедить свой WRL, который умеет в виртуальное наследование?
либо может удобнее наследника объявить.

а чё б не в паскаль?! я вот его потихоньку "навязываю" на работе :)

#24
6:13, 22 мар. 2019
skalogryz
> а чё б не в паскаль?! я вот его потихоньку "навязываю" на работе :)
Специфика проекта такая. Интерфейсы кстати из паскаля и пришли.
Страницы: 1 2
ПрограммированиеФорумОбщее

Тема в архиве.