メソッドのポインタを取得できますが、オブジェクトを使用して呼び出す必要があります
typedef void (T::*MethodPtr) ();
MethodPtr method = &T::MethodA;
T *obj = new T();
obj->*method();
非オブジェクトポインタが必要で、オブジェクトを使用する場合は、オブジェクトのインスタンスをどこかに格納する必要がありますが、使用できるオブジェクトは1つ(シングルトン)のみに制限されています。
class T {
static T *instance;
public:
T::T() {
instance = this;
}
static void func() {
instance->doStuff();
}
void doStuff() {}
};
ライブラリが関数ポインタのユーザーデータをサポートしている場合は、複数のインスタンスが存在する可能性があります
class T {
public:
static void func(void *instance) {
((T*)instance)->doStuff();
}
void doStuff() {}
};