以下是我想要实现的一个例子以及具体步骤:
class MyClass
{
public:
void Dummy() const{}
};
typedef void (MyClass::*MemFunc)();
void (const MyClass * instance)
{
MemFunc func=&MyClass::Dummy;
// (instance->*func)(); //gives an error
(const_cast<MyClass *>instance->*func)(); // works
}
为什么编译器(gcc 3和4)坚持实例应该是非const的?那么const_cast会引起问题吗?
FYI:instance并不一定是const,我只是不希望被调用者搞乱它。
这里发生了什么?