【发布时间】:2009-11-26 06:50:10
【问题描述】:
下面的示例方法旨在检测它是否已在派生类中被覆盖。我从 MSVC 得到的错误意味着试图让函数指针指向“绑定”成员是完全错误的,但我认为这不是一个问题的逻辑原因(毕竟,它将在 this ->vtable)。是否有任何非 hacky 方法来修复此代码?
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”;
}
};
【问题讨论】:
标签: c++ virtual-functions