通过引用调用函数(?)

时间:2013-03-06 12:58:13

标签: c++ function-pointers

我有以下函数调用(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 :(

感谢各位帮忙!

2 个答案:

答案 0 :(得分:4)

您可以使用std::functionstd::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