で定義されたポインタを介して、クラスメソッドを呼び出す場合には、私は次のように定義されたクラスがあります主な機能で構文そのクラス
class A
{
public:
A()
{
fp = &A::f;
}
void (A::*fp)();
void f()
{
cout << "A::f()" << endl;
}
};
を、Iは、定義されたクラスAのオブジェクトがあり、Iは呼び出したいです.fp()。しかし、私はa.fp()
でも(a.fp)()
でもこれを行うことができないことを知りました。最後に、構文の観点から全く奇妙な(a.*a.fp)()
が働いていました。
int main()
{
A a;
(a.*a.fp)();
return 0;
}
は、誰もが
(a.*a.fp)()
が実際に何を意味するのか説明してもらえ、なぜ
(a.fp)()
動作しませんか?
与えられたAインスタンス(あなたの例では 'a')で' a.fp'を得るために一度、そして 'fp'を呼び出すために二度目に' a'を2回アクセスする必要があります。 – rustyx