상수 객체에 대한 포인터를 사용하여 멤버 함수 포인터를 호출하려면 어떻게해야합니까?
다음은 내가 성취하고자하는 방법의 예입니다.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 일 필요는 없습니다. 다만 피 호출자가 혼란에 빠지 길 바라지 않습니다.
여기서 무엇이 일어나고 있습니까?