0

次の関数呼び出しがあります(myFunc()はdouble型です):

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

valueを呼び出すときに、F1-> F2-> myFunc();を呼び出す必要があるものを取得したいと思います。

フォーラムの助けを借りて、変数を介して関数を呼び出すよりも助けを得て理解しました。次のようなことを行う必要があります。

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

そしてそれをvariable();のように呼び出します。

残念ながら、上記の設定では実際には機能しません。&F2 :: myFuncへの参照を取得しますが、上記の設定で取得するにはどうすればよいですか?

何かのようなもの:

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

助けてくれてありがとう!

4

2 に答える 2

4

あなたはとでこれを行うことができstd::functionます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では、ラムダを使用できます。

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

彼の次の本EffectiveC++11に関するScottMeyerの更新は、次のようにも述べています。

ラムダを優先しstd::bindます。

于 2013-03-06T13:03:26.590 に答える