Wie kann eine C ++ - Basisklasse zur Laufzeit feststellen, ob eine Methode überschrieben wurde?

Die folgende Beispielmethode soll erkennen, ob sie in einer abgeleiteten Klasse überschrieben wurde oder nicht. Der Fehler, den ich von MSVC erhalte, impliziert, dass es einfach falsch ist, den Funktionszeiger auf ein "gebundenes" Element zu setzen, aber ich sehe keinen logischen Grund, warum dies ein Problem sein sollte (schließlich wird es in seinthis-> vtable). Gibt es eine unkomplizierte Möglichkeit, diesen Code zu reparieren?

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

Antworten auf die Frage(3)

Ihre Antwort auf die Frage