У меня есть мечта. То, что я могу хранить лямбда-выражения, переданные функции в векторе, как объекты, заключенные в класс.
Затем они запускаются в заданной точке позже, и если они имеют возвращаемое значение, оно получается.
Я пытался найти способ сделать это, например, мой другой пост застопорился Вектор с объектами, которые имеют функциональные указатели различного типа
Причина, по которой я так хочу, заключается в том, чтобы он был максимально динамичным и простым в любом сценарии.
В текущем случае это будет использоваться в эволюционных алгоритмах, которые выполняют задачи в отдельных процессах и пространствах памяти.
Моя мечта неосуществима или плохой дизайн? Ты знаешь лучший способ? Я занимался этим уже несколько дней, и у меня ничего не компилируется.
Я был бы благодарен, если бы меня указали в правильном направлении.
В основном что-то вроде этого:
std::vector<CallbackJob> myCallbackList;
std::vector<CallbackJobResult> myCallbackResultList;
Callback myCB = make_callback( [&]{ return Task->Test("I return boolean"); } );
Callback myCB2 = make_callback( [&]{ return Foo("I return doubles"); } );
CallbackJob job1("name1", myCB, 1);
CallbackJob job2("name2", myCB2, 5);
myCallbackList.push_back(job1);
myCallbackList.push_back(job2);
for(auto &i : myCallbackList) {
// maybe need to check if it has a return value, embed it into the callback object itself?
myCallbackResultList.push_back( i.callback() );
}