C++ でメンバー関数へのポインターを使用したいのですが、うまくいきません。
ポインター宣言:
int (MY_NAMESPACE::Number::*parse_function)(string, int);
ポインタの割り当て:
parse_function = &MY_NAMESPACE::Number::parse_number;
この呼び出しは完全に機能します (itd はマップの要素への反復子です)。
printf("%s\t%p\n",itd->first.c_str(),itd->second.parse_function);
しかし、これは機能しません:
int ret = (itd->second.*parse_function)(str, pts);
$ error: 'parse_function' was not declared in this scope
そして、これはどちらも
int ret = (itd->second.*(MY_NAMESPACE::Number::parse_function))(str, pts);
$ [location of declaration]: error: invalid use of non-static data member 'MY_NAMESPACE::Number::parse_function'
$ [location of the call]: error: from this location
理由がわかりません...
事前にthx!!