Re[5]: Как такое написать по Сиплюсплюсному?
От: B0FEE664  
Дата: 24.03.25 11:07
Оценка:
Здравствуйте, kov_serg, Вы писали:

BFE>>Тупое решение "в лоб":

_>Дык хотелось не заводить лишних указателей.
Это в прошлом веке имело иногда смысл экономить на указателях, а современном мире экономить на указателях — это себя не уважать.

BFE>>А зачем так издеваться над объектно ориентированным подходом?

_>Очень просто это указатель группу функци — переходник такой.
Ну так и зачем эти извращения?
Если вам нужен указатель на группу функций, ну так и заведите группу функций и возьмите от неё указатель.
struct Listner
{
  std::function<void(void *args)> begin;
  std::function<int(double p)> progress;
  std::function<void(void *args)> end;
};


struct GUIWindow {
...
  // это объявление писать в конце класса 
  Listner action1 = 
  {
     .begin    = std::function<void(void *args)>( [pThis = this](void *args){        pThis->action1_begin((Action1Args*)args);}),
     .progress = std::function<int(double p)   >( [pThis = this](double p)  { return pThis->action1_progress(p);}),
     .end      = std::function<void(void *args)>( [pThis = this](void *args){        pThis->action1_end((Action2Result*)res);}),
  };
};


А вообще, здесь где-то нужен полиморфизм вида signal-slot (или шаблонные виртуальные функции, которые в C++ все еще не могут добавить из-за косности мышления)
И каждый день — без права на ошибку...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.