我有以下函数调用(myFunc()是double类型):
double value = F1->F2->myFunc();
我想得到一些东西,当我称之为值时,它应该调用F1-> F2-> myFunc();
在论坛的帮助下,我得到了帮助和理解,而不是通过变量调用函数我应该做的事情:
typedef double(*)() m;
m variable = myFunc;
并将其称为变量();
不幸的是,上面的设置并没有真正起作用, 我得到了对& F2 :: myFunc的引用,但我如何在上面的设置中得到它?
类似的东西:
typedef double(*)() m;
m variable = &F2::myFunc; <- doesn't work :(
感谢各位帮忙!
答案 0 :(得分:4)
您可以使用std::function
和std::bind
执行此操作:
std::function<double()> variable = std::bind(&ClassOfF2::myFunc, F1->F2);
double value = variable();
答案 1 :(得分:3)
我想得到一些东西,当我称之为值时,它应该调用F1-&gt; F2-&gt; myFunc();
在C ++ 11中,您可以使用lambda:
auto l = [&] () { return F1->F2->myFunc(); };
double value = l();
Scott Meyer's update在他即将出版的书“Effective C ++ 11”中也提到:
首选lambdas到
std::bind
。