Как бы вы вызвали функцию, если не знаете, сколько у нее параметров?Есть решения для этого, но почему бы не сделать это простым ...
Допустим, вы хотите использовать любой из двух в качестве обратного вызова:
void foo(std::string x) {}
void bar(int x) {}
Затем вы можете обернуть их вместес параметрами в лямбда-выражениях и сохраните их в std::function
, например:
#include <string>
#include <functional>
void foo(std::string x) {}
void bar(int x) {}
struct caller {
std::function<void()> callback;
void call() { callback(); }
};
int main(){
caller c{ [](){ foo("test"); }};
c.call();
caller d{ [](){ bar(1); }};
d.call();
}
Если передаваемые параметры должны быть более динамичными, вам, конечно, нужно что-то большее.