Re[2]: Интерфейсы и реализации
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 06.03.24 01:25
Оценка:
Здравствуйте, rg45, Вы писали:

M>>Из плюсов — можно при необходимости даже в рамках одной платформы и в рамках одного приложения сделать разные реализации и при необходимости использовать ту или иную реализацию, с возможностью выбора в рантайме.


R>Ну вот тут желательно сразу определиться с потребностями. Переносимость на различные платформы — это одно, а возможность выбора реализации в рантайме — совсем другое. Если тебе действительно нужно переключаться между реализациями в рантайме, то ты на правильном пути.


Изначально я закладывался на то, чтобы работало даже на самой древней винде. Я вообще ещё и 9X по привычке поддерживаю в некоторых проектах, но в данном проекте решил, что хотя бы WinXP SP3. GDI — опять же — совместимость (в тч по всяким RDP и тп), плюс как эталон минимального АПИ. GDI+ прикрутил позже для большей гладкости изображаемого, и оказалось, что оно вообще тормоз (а со шрифтами так вообще откровенно хуже), поэтому сделал возможность в динамике переключаться. В этот раз изначальный выбор в пользу динамики сработал в плюс. Но есть сомнения, надо ли и дальше использовать этот подход.

Под линупсы хз, наверное буду через Qt делать, и не думаю, что так уж надо будет в рантайме уметь использовать Qt4 и Qt5 одновременно, так что наверное можно отказаться от динамики, хотя, хз.


M>>В общем, как бы и на елку залезть, и жопу не ободрать?

M>>Есть идеи, как сделать шоколадно?

R>Если говорить вообще о переходе от динамического полиморфизма к статическому, безотносительно данной задачи, то тут принцип не очень сложный — то, что было абстрактным интерфейсом становится концептом. Но тут главное без фанатизма — не обязательно описывать концептами прямо все-все подряд. В каждой задаче есть набор каких-то относительно статичных сущностей — типов и констант, для которых кастомизация не очень актуальна — ну так пусть эти типы и константы такими и остаются. При необходимости их можно использовать при определении концептов.


Я пока сижу на MSVC2019, которая с++17, и которая вроде как последняя умеет собирать exe-шники в WinXP SP3 без каких-либо приседаний. Слезать с неё не особо планирую, поэтому всякие новомодные штуки типа концептов не пробовал, за неимением. Ну и если потом думать о порте под железяку, то использование самых последних плюсиков тут скорее минус. Ну, или даже если брать какие-то стабильные дистры линупса, или те же российские клоны, там искаропки далеко не свежак.

Так что тут вопрос о том, как лучше приготовить кактус, чтобы при поедании не слишком уколоться


R>
R>template <typename T>
R>concept Cursor = std::default_initializable<T> && BooleanTestable;
R>


Не, можно попроще как-то?
Маньяк Робокряк колесит по городу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.