0

我有以下函数调用(myFunc() 是 double 类型):

double value = F1->F2->myFunc();

我想得到一些东西,当我调用 value 时,它​​应该调用 F1->F2->myFunc();

在论坛的帮助下,我得到了帮助和理解,而不是通过变量调用函数,我应该执行以下操作:

typedef double(*)() m;
m variable = myFunc;

并像变量()一样调用它;

不幸的是,上面的设置并没有真正起作用,我得到了 &F2::myFunc 的引用,但是我如何在上面的设置中得到它?

就像是:

typedef double(*)() m;
m variable = &F2::myFunc; <- doesn't work :(

谢谢大家的帮助!

4

2 回答 2

4

std::function你可以用and做到这一点std::bind

std::function<double()> variable = std::bind(&ClassOfF2::myFunc, F1->F2);

double value = variable();
于 2013-03-06T13:01:22.800 回答
3

我想得到一些东西,当我调用 value 时,它​​应该调用 F1->F2->myFunc();

在 C++11 中,您可以使用 lambda:

auto l = [&] () { return F1->F2->myFunc(); };
double value = l();

Scott Meyer在他即将出版的《Effective C++ 11》一书中的更新还提到:

更喜欢 lambdas 到std::bind.

于 2013-03-06T13:03:26.590 回答