Вопрос по перегрузке типов
От: PavelCH  
Дата: 26.08.18 11:26
Оценка:
Добрый день!

Допустим есть такой код:
struct runable {
    virtual void execute() = 0;
};

struct runable_for_str : runable {
    char        temp[256];
    const char* value;
    runable_for_str(const char* value) :value(value) {}
    virtual void execute() { /* Some logic here */ }
};

struct runable_for_int : runable {
    int        value;
    runable_for_int(int value) :value(value) {}
    virtual void execute() { /* Some logic here */ }
};

void proc1(const runable& callback) {}
void proc2(const runable& callback) {}

Сейчас вызов процедур proc1, proc2 выглядит как
proc1(runable_for_str("Some string")) {}
proc2(runable_for_int(123)) {}

Есть ли возможность каким-то паттерном автоматически определять тип? В идеале чтобы вызов свелся к следующему
proc1("Some string");
proc2(123);

Если же так не получится, то хотябы к такому:
proc1(driver_proc("Some string"));
proc2(driver_proc(123));

Я пробывал пойти через промежуточную функцию driver_proc — там перегрузка типов работает, но преобразовать промежуточные классы в runable() не получается.
Нехай щастить
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.