与えられたクラス
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