为什么这个指向C++函数代码的指针会产生编译错误?

And*_*ewR 1 c++ visual-c++

谁能解决这个问题?我似乎无法在任何地方找到解决方案,但我认为没有合理的理由为什么下面的行(显示编译错误的注释)应该是一个问题.

注意:此问题是C++基类如何在运行时确定方法是否已被覆盖的衍生物

class MyClass
{
        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”;
        }
};
Run Code Online (Sandbox Code Playgroud)

Vij*_*hew 12

ISO C++禁止获取非限定或带括号的非静态成员函数的地址,以形成指向成员函数的指针.这样可以解决名称错误问题.因此,您尝试做的事情将无法在符合标准的C++编译器中运行.