は、私がどのように達成し、したいものの一例である:定数オブジェクトへのポインタを使用してメンバ関数ポインタを呼び出すにはどうすればよいですか?ここ
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ではありませんが、私はちょうど被呼び出し者にそれを混乱させたくありません。
ここで何が起こっているか