【发布时间】:2014-10-26 23:49:26
【问题描述】:
我想将向量/双端队列作为函数容器。
此容器必须采用具有不同参数的不同函数。
示例函数:
program_data::getInstance().function(int,std::string);
program_data::getInstance().foo(int);
program_data::getInstance().exam(int,std::string,double);
您能否展示示例代码如何放置这些带有参数的函数到 std::vector / std::deque 和 execute?
我认为我应该使用 std::function 和 std::bind 但我不知道如何支持具有不同 args 大小的不同函数。
带参数 -> 我的函数(称为function foo exam,来自program_data)使用参数执行一些操作。
例如:通常我执行这个函数:
program_data::getInstance().function(10,"halo");
现在我想将这些函数放入std::vector // deque 并使用我放入函数的参数执行。即(如果我将上面的函数放入向量并使用(伪代码)vector[0].run();,那么我的程序运行函数program_data::getInstance().function(int,std::string);)
【问题讨论】:
-
"with arguments" - 意思是你想创建一些东西,当被调用时,它与使用指定参数调用函数具有相同的效果?
-
您可能正在寻找 lambda 表达式? stackoverflow.com/questions/7627098/…
-
您的参数值在入队时是否已知?您的函数的返回类型是否始终相同?
-
对不起,'enque' 是什么意思? - 是的,返回类型相同 ->
void -
如果
std::vector/std::deque可以在编译时填写,你可以简单地制作一个包含函数的结构体。