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

Rispondi quotando
