execute(). И нужно в производных классах переопределить эту функцию, но у каждого производного класса может быть разный возвращаемый тип, вплоть до нескольких разных типов.
Возможно, возвращаемый тип тоже должен быть виртуальным? А нужно ли именно в рантайме это определять, возможно, тут стоит использовать трейты?
Так не бывает. Вообще. Ты можешь это преодолеть, возвращая в базовом классе что-то типа std::variant , std::any . Но это нужно будет менять базовый класс.
template<class T...> struct Returns{ virtual void Execute(std::function<void(T...)>) = 0; } class Something : Returns<int> { } но вызывающая сторона должна знать что у тебя там ожидается
Обсуждают сегодня