Ciao a tutti, ho un problema con un pezzo di codice su C++ in particolare ho un metodo di una classe che prende come parametro un indirizzo di una funzione e la usa come handler in caso si verifica un determinato evento; adesso io volevo passare a questa funzione non un indirizzo di una funzione ma di un metodo di una classe ovvero, faccio un esempio con del codice:

Classe Receiver
codice:
class Receiver {


    public:
        Receiver();
        ~Receiver();
        void StartRecvMessages();


    private;
         void message_handler( MyObj& obj );
        
};

File Receiver.cpp
codice:
void msg_handler ( MyObj& obj );


void  Receiver::StartRecvMessages()  {
    // ...


    SocketReceiver r;
    MyObj obj;


    // in questo modo non compila suppongo perchè devo fare riferimaneto
    // in qualche modo al fatto che message_handler è un metodo della classe Receiver
    // ma in che modo?
    r.async_receive<MyObj>( &message_handler );


    // neppure se metto in questo modo che avrebbe più senso, funziona
    r.async_receive<MyObj>( &(Receiver::message_handler) );


    // mentre così funziona
    r.async_receive<MyObj>( &msg_handler );


    //...


}


void Receiver::message_handler( MyObj& obj ) {
    //do somethings
}


void msg_handler ( MyObj& obj ) {
    //do somethings
}

Ci potrebbero essere degli errori perchè ho scritto il codice semplificato solo per fare un esempio e non è compilabile.
Purtroppo la parte del metodo async_receive ha solo quel parametro ed è una funzione di una libreria che devo usare, quindi non posso aggiungergli parametri.

Qualcuno che ha una dritta?
grazie mille ragazzi