重複の可能性:
C++ メンバー関数ポインター
クラス データ メンバーの場合、メンバー関数へのポインターを呼び出す方法は?
私は最近 C++ を使い始めたばかりなので、以下に些細な間違いが含まれていたり、簡単な解決策を見逃していたりした場合は、お詫び申し上げます。私はこのようなことを達成したいと思います:
class ClassA {
typedef double (ClassA::*CondFunc)();
public:
ClassA(int x, int y) {
value_ = x;
switch (y) {
case 0:
condFunc_ = &ClassA::condA;
break;
case 1:
condFunc_ = &ClassA::condB;
default:
break;
}
}
~ClassA();
int value_;
CondFunc condFunc_;
double condA() { return 2.0*value_; }
double condB() { return 4.0*value_; }
void Test() {
int a = condFunc_(); // compile error
}
};
しかし、Test() でコンパイル エラーが発生します。これは非常に単純化された関数であり、意味をなさないことに注意してください。このフォーラムや他の場所で回答を検索しましたが、そのような非静的メンバー関数ポインターの定義/呼び出しが可能かどうかはまだわかりません。私が遭遇した唯一のもっともらしいヒント/解決策は、静的ラッパー関数を使用して同様のことを達成することです。ヘルプ/説明に感謝します。