可能重复:
使用函数指针调用虚成员函数的基类定义
给定以下层次结构:
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
(为了记录,我实际上不需要这样做。我只是好奇。)