Подскажите пожалуйста, как лучше сделать архитектурно? Имеется базовый класс с функцией execute(). И нужно в производных классах переопределить эту функцию, но у каждого производного класса может быть разный возвращаемый тип, вплоть до нескольких разных типов.
Подскажите пожалуйста, как лучше сделать архитектурно? Имеется базовый класс с функцией execute(). И нужно в производных классах переопределить эту функцию, но у каждого производного класса может быть разный возвращаемый тип, вплоть до нескольких разных типов.
Возможно, возвращаемый тип тоже должен быть виртуальным? А нужно ли именно в рантайме это определять, возможно, тут стоит использовать трейты?
что значит виртуальный возвращаемый тип? И в идеале это конечно сделать в компайл тайме, но не могу сообразить как
Если компил-тайм, то что-то по аналогии с basic_string. Нужно написать свой шаблонный basic_ класс, определить в нём интерфейс, а реальную логику предоставить классу трейтов.
Шаблонным аргументом может быть как сам класс с трейтами, так и что-то более осмысленное, на основе чего будут выводиться трейты
Подскажите пожалуйста, как лучше сделать архитектурно? Имеется базовый класс с функцией execute(). И нужно в производных классах переопределить эту функцию, но у каждого производного класса может быть разный возвращаемый тип, вплоть до нескольких разных типов.
Так не бывает. Вообще.
Ты можешь это преодолеть, возвращая в базовом классе что-то типа std::variant , std::any . Но это нужно будет менять базовый класс.