Есть ли способ сделать указатель на функцию-член в базовом классе, если это виртуальная функция, и она переопределена в производном классе?
Рассмотрим код следующим образом
#include <iostream>
#include <functional>
struct Base
{
virtual void g() const
{
std::cout << "Base" << std::endl;
}
};
struct Derived : Base
{
virtual void g() const override
{
std::cout << "Derived" << std::endl;
}
};
int main()
{
Derived d;
(d.*(&Base::g))();
std::mem_fn(&Base::g)(d);
return 0;
}
Он печатает «Derived» дважды, несмотря на то, что я делаю указатель на Base::g. Есть ли способ сохранить функцию g виртуальной и переопределенной и получить указатель функции-члена, который будет печатать «Base» для d?