Как базовый класс C ++ может определить во время выполнения, был ли метод переопределен?

Приведенный ниже пример метода предназначен для определения того, был ли он переопределен в производном классе. Ошибка, которую я получаю из MSVC, подразумевает, что просто неправильно пытаться получить указатель функции на «связанный» член, но я не вижу логической причины, почему это должно быть проблемой (в конце концов, это будет вthis-> виртуальные таблицы). Есть ли нехакерный способ исправить этот код?

class MyClass
{
public:
    typedef void (MyClass::*MethodPtr)();  

    virtual void Method()
    {
        MethodPtr a = &MyClass::Method; // legal
        MethodPtr b = &Method;  // <<< error C2276: ‘&’ : illegal operation on bound member function expression

        if (a == b)     // this method has not been overridden?
            throw “Not overridden”;
    }
};

Ответы на вопрос(3)

Ваш ответ на вопрос