関数メンバーへのポインターを使って何かをしようとしていますが、これがどのように機能するのか理解できません。
私はこのようなクラスAを持っています
class A
{
public:
float Plus (float a, float b) { return a+b; }
float Minus (float a, float b) { return a-b; }
float Multiply(float a, float b) { return a*b; }
float Divide (float a, float b) { return a/b; }
};
Aへのポインターを宣言してから、Aのメンバーの1つへの関数ポインターを別の関数に渡したいと思います。
これが好きなもの:
void Will_Get_Function_Pointer(float a, float b, float (A::*pt2Func)(float, float))
{
(...)
}
私がこのようなものでそれを呼ぶところ
A* myA = new A;
Will_Get_Function_Pointer(1.00,2.00, &myA->Minus)
最終的な実装では、AはAオブジェクトのコレクション内の特定のAを指し、次のようになるため、static/constメンバーを使用できません。
vector<A> vecA;
myA = &vecA[xxx]
これを行うと惨めに失敗します
typedef float (A::*pA)(float x, float y);
pA p = &myA->Minus;
コンパイラは&A :: Minusを使用するように指示しますが、それは私には機能しません。
私もこれを行うことができますか?
乾杯