次の階層があるとします。
struct Base
{
virtual void f() = 0;
};
void Base::f()
{
cout << "Base::f\n";
}
struct Derived : Base
{
void f()
{
cout << "Derived::f\n";
}
};
Base::f
次のように呼び出しを強制できます。
Derived d;
d.Base::f();
また:
Base * b = &d;
b->Base::f();
そこに驚きはありません。しかし、呼び出すことができるメンバー関数ポインターを取得することは可能Base::f
ですか?
void (Base::*bf)() = &Base::f;
for_each( b, b+1, mem_fn( bf ) ); // calls Derived::f
(記録のために、私は実際にこれを行う必要はありません。私はただ興味があります。)