【C++】関数ポインタの使い方
関数ポインタの使い方で悩んでいます。
下記の
(1)のようにグローバルメソッドとして定義したメソッドを関数ポインタに代入することは出来るのですが、
(2)のようにクラスのメンバメソッドとして定義したメソッドは関数ポインタに代入することは出来ませんでした。
Error:バインドされた関数へのポインターは関数の呼び出しにのみ使用できます。
というエラーが発生します。
関数ポインタに外部参照でメソッドを代入することは出来ないのでしょうか?
-----(1)------------------------------------------------------------------
#include "stdafx.h"
#include <iostream>
using namespace std;
int f(int a, int b){
return a * b;
}
int _tmain(int argc, _TCHAR* argv[])
{
typedef int (* FUNC_POINTER)(int, int);
FUNC_POINTER fp;
fp = f;
cout << fp(1,2) <<endl;
getchar();
return 0;
}
-------------------------------------------------------------------------
-----(2)------------------------------------------------------------------
#include "stdafx.h"
#include <iostream>
using namespace std;
class MPointerList{
public:
int f(int a, int b){
return a * b;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
typedef int (* FUNC_POINTER)(int, int);
FUNC_POINTER fp;
//fp = f;
MPointerList mP;
fp = mP.f;
cout << fp(1,2) <<endl;
getchar();
return 0;
}
-------------------------------------------------------------------------
お礼
ありがとうございました。 自分でcallbyname関数を調べたときは、callbynameの第3引数の意味(違い)がわからなかったり、(実際にいろいろ動かしてみてもエラーしか出なくて、エラーヘルプの意味もわからず、・・・。) 実際、(第一引数).(第二引数)の形になっているかとも思いまして、(Microsoftのサンプルで(Textbox1,"TEXT",…)だったので・・・) もう少し関数自身を調べるのではなく、ヘルプで出てきた分からない用語を調べるようにしていかなければいけない気がしました。 今回は大変勉強になりました。ありがとうございました。