Здравствуйте, sergey2b, Вы писали:
S>есть класс, графическое окно с пару десятком методов для вывода графики
S>оно работает только под виндой а мне надо добавить саппорт linux (код уже есть) S>вомногих приложениях и классах есть поинтер на этот класс S>как можно добавить новый функционал, что бы не менять исходный код прилжений и классов использующих класс окна сейчас
S>пока вижу варианты
S>детский #ifdef (но яуже понял что реализовать просто не удастся)
Для небольших классов годится.
S>изменить существующий класс, фабрика возрашает поинтер на нужный класс и методы используют его
Можно и так.
Еще есть pimpl.
Системозависимая функциональность выносится в отдельный класс и отдельный файл.
Upd. Подумай еще. Может удастся обойтись просто парой реализаций твоего класса — одна для винды, другая — для линюха.
Интерфейс должен быть идентичным.
В зависимости от ОС цепляется либо одна реализация, либо другая — это уже управляется на уровне makefile (подставить своё).
_____________________
С уважением,
Stanislav V. Zudin
Здравствуйте, sergey2b, Вы писали:
S>Здравствуйте, Stanislav V. Zudin, Вы писали:
SVZ>>Еще есть pimpl. SVZ>>Системозависимая функциональность выносится в отдельный класс и отдельный файл.
S>а чем pimpl от декоратора отличаетья S>кроме того что в одном случаи поинтер используеться, а в другом объект
В этом и отличается. Ну и плюс там нет наследования как такого.
Вот например как в Qt сплошь и рядом. https://habr.com/ru/post/76248/
Но вот как написали выше, самое нормальное и простое:
mywindow.h — тут интерфейс
mywindow_win.cpp — реализация win
mywindow_linux.cpp — реализация Linux
mywindow_mac.cpp — реализация Mac
При сборке разруливаешь.
Только Путин, и никого кроме Путина! О Великий и Могучий Путин — царь на веки веков, навсегда!
Смотрю только Соловьева и Михеева, для меня это самые авторитетные эксперты.
КРЫМ НАШ! СКОРО И ВСЯ УКРАИНА БУДЕТ НАШЕЙ!