W jaki sposób klasa bazowa C ++ może określić w czasie wykonywania, czy metoda została zastąpiona?

Poniższa przykładowa metoda ma na celu wykrycie, czy została ona zastąpiona w klasie pochodnej. Błąd, jaki otrzymuję od MSVC, oznacza, że ​​po prostu próbuję dostać wskaźnik funkcji do „powiązanego” elementu, ale nie widzę logicznego powodu, dla którego miałby to być problem (w końcu będzie onto-> vtable). Czy jest jakiś niezręczny sposób naprawienia tego kodu?

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”;
    }
};

questionAnswers(3)

yourAnswerToTheQuestion