【发布时间】:2012-09-24 14:24:49
【问题描述】:
我有一个接受 3 个参数的函数。其他函数的向量、void* 和任意参数列表。该函数旨在将其 void* 和任意参数列表传递给列表中的每个函数,这些函数将自行处理。这是我想要的一个例子:
typedef void (*fptr)(const void* userdata, ...);
void execute_all(vector<fptr> funcs, void* userdata, ...){
for (int i = 0;i<funcs.size();i++){
fptr func = funcs[i];
//execute func with userdata and ... from above.
//like (*func)(userdata, ...); which obviously doesnt work
}
}
我需要知道如何将所有参数转发到每个函数中。不要担心确保兼容性。我在其他地方处理。
谢谢
【问题讨论】:
-
你考虑过C++11的variadic templates特性吗?
-
@user1629821 我不相信我可以假设目标机器上安装了 c++11
-
你的意思是每个函数都用相同的参数执行吗?
-
没有安装 C++11 之类的东西。您构建了一个没有 C++ 版本概念的可执行文件。除非“目标”是指开发机器。
-
@ZdeslavVojkovic 啊。那么在这种情况下,可变参数模板可能是要走的路。我将不得不研究它,除非你能在这里给我一个简单的例子来说明如何做到这一点
标签: c++ function variadic-functions