Я хочу вызвать реализацию базового класса виртуальной функции с помощью указателя функции-члена.
class Base {
public:
virtual void func() { cout << "base" << endl; }
};
class Derived: public Base {
public:
void func() { cout << "derived" << endl; }
void callFunc()
{
void (Base::*fp)() = &Base::func;
(this->*fp)(); // Derived::func will be called.
// In my application I store the pointer for later use,
// so I can't simply do Base::func().
}
};
В приведенном выше коде функция func производного класса будет вызвана из callFunc. Есть ли способ сохранить указатель на функцию-член, который указывает на Base:: func, или мне придется каким-то образом использовать using
?
В моем реальном приложении я использую boost:: bind для создания объекта boost:: function в callFunc, который позже я использую для вызова func из другой части моей программы. Поэтому, если boost:: bind или boost:: function имеют некоторый способ обойти эту проблему, которая также поможет.