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