与えられたクラス
class C {
public:
int f (const int& n) const { return 2*n; }
int g (const int& n) const { return 3*n; }
};
このように関数ポインタp
を定義できますC::f
。
int (C::*p) (const int&) const (&C::f);
の定義は、p
を使用して分割できますtypedef
。
typedef int (C::*Cfp_t) (const int&) const;
Cfp_t p (&C::f);
(たとえば)p
が変わらないようにするために、次のことができます。p = &C::g;
const Cfp_t p (&C::f);
さて、p
この場合の型は何でしょう?p
そして、typedef を使用せずに の最後の定義をどのように達成するのでしょうか? typeid (p).name ()
最も外側の const を区別できないことは承知しています。
int (__thiscall C::*)(int const &)const