Voici un exemple de ce que je veux accomplir et comment:Comment appeler un pointeur de fonction membre en utilisant un pointeur vers un objet constant?
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
}
Pourquoi compilateurs (gcc 3 & 4) insistent sur le fait que l'instance doit être non-const? Est-ce que const_cast causerait des problèmes?
FYI: instance` n'est pas forcément const, je ne veux tout simplement pas qu'un callee s'en mêle.
Que se passe-t-il ici?