これは私を打ち負かしました。(非静的) メンバー関数へのポインターである静的クラス変数が必要です。私はあらゆる種類の方法を試しましたが、運がありませんでした(typedef
s を使用すると、別のエラーセットが発生するように見えました)。以下のコードには、 static クラス関数 pointerfuncptr
があり、クラスの外部からは正常に呼び出すことができますが、メンバー関数内からは呼び出すことができCallFuncptr
ません。これが私がやりたいことです。助言がありますか?
#include <stdio.h>
class A
{
public:
static int (A::*funcptr)();
int Four() { return 4;};
int CallFuncptr() { return (this->*funcptr)(); }
// doesn't link - undefined reference to `A::funcptr'
};
int (A::*funcptr)() = &A::Four;
int main()
{
A fred;
printf("four? %d\n", (fred.*funcptr)()); // This works
printf("four? %d\n", fred.CallFuncptr()); // But this is the way I want to call it
}