Abbiamo una semplice libreria di comunicazione per i nostri clienti.Chiamata in C++ a un membro della classe
Il mio problema è: come posso salvare un puntatore a un metodo da una classe del nostro cliente?
Library.h
è il file di intestazione con tutti i metodi necessari al nostro cliente per stabilire una comunicazione.
library.cpp
è il nostro codice. Da qualche parte qui devo salvare i puntatori al metodo della funzione di callback dai nostri clienti.
customer.cpp
è un esempio di come un cliente utilizza la nostra libreria.
library.h:
// This is the header file what our customer gets
class Library {
public:
template <class Object, class Function>
void SetCallback(Object &obj, Function f);
};
library.cpp:
struct T_CUSTOMER {
Object o; // <- ???
Function f; // <- ???
} customer;
void Library::SetCallback(Object &obj, Function f) {
//Saving the method from our costumer
customer.o = obj; // <- ???
customer.f = f; // <- ???
}
void someFunction(void) {
// here i want to call the method from the customer
customer.o->customer.f(); //<- ???
}
customer.cpp:
class AnyCustomerClass {
private:
Library lib;
public:
AnyCustomerClass() {
//< here the customer sets his method which I should call
lib.SetCallback(this, &AnyCustomerClass::callback());
}
callback() {
// do something
}
}
Grazie per qualsiasi aiuto!
Puoi dare un altro sguardo al codice che ho postato ieri? [Link] (http://stackoverflow.com/questions/4919308/callback-in-c-to-a-class-member/4920803#4920803) I mai pensato che sarebbe stato così complicato per me scrivere una funzione di callback. Grazie mille! – Sascha
-1 per ignorare la gestione della memoria. – ltjax