Здравствуйте, 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++ все еще не могут добавить из-за косности мышления)