ラムダ関数を使用したいのですが、問題があります:
「グローバル スコープ」で std::function として宣言された関数への参照を格納する場合、問題はありません。
int myFunction()
{
return 665;
}
int main()
{
function<int()> functionRef = myFunction; //This works
}
同じことをしたいが、メソッドへの参照を保存したい場合:
//A class
class myClass
{
public:
int myMethod()
{
return 666;
}
};
//I create an instance:
myClass myInstance;
int main()
{
function<int()> functionRef2 = myInstance.myMethod; //This doesn't work... why?
}
このエラーが表示されます:
エラー C3867: 'myClass::myMethod': 関数呼び出しに引数リストがありません。「&myClass::myMethod」を使用してメンバーへのポインタを作成します
「()」なしで関数を呼び出すとエラーが発生することはわかっていますが、この場合は関数を呼び出していません。変数に格納するだけです。Visual C++ 2010 を使用しています。ご協力ありがとうございます。