Jeśli rozumiem zostanie poprawnie, można zrobić to 2 różne sposoby.
Zakładając, że struktura ta zwrotna jest za pomocą parametru danych, co pozwala przekazać własne dane do funkcji zwrotnej (wspólny paradygmat), można zrobić to tak:
class MyProcessingClass
{
public:
MyProcessingClass();
virtual ~MyProcessingClass();
// Do whatever processing in this method
virtual void onReceive(Lacewing::Server &Server, Lacewing::Server::Client &Client);
}
void onReceive (Lacewing::Server &Server, Lacewing::Server::Client &Client,
char * Data, int Size)
{
if (Data != NULL)
{
MyProcessingClass *handler = reinterpret_cast<MyProcessingClass *>(Data);
handler->onReceive(Server, Client);
}
}
Lub, jeśli wskaźnik danych jest czymś, co musisz przetworzyć zamiast "wskaźnika danych użytkownika", prawdopodobnie użyjesz pojedynczej, jakiejś zmiennej globalnej lub podobnej. Z mojego doświadczenia wynika, że jest to mniej popularny sposób korzystania z wywołań zwrotnych, i mam nadzieję, że nie jest to, z czym masz do czynienia.
MyProcessingClass g_Processor;
MyProcessingClass *GetProcessor()
{
return &g_Processor; // or some other way of getting your instance
}
void onReceive (Lacewing::Server &Server, Lacewing::Server::Client &Client,
char * Data, int Size)
{
MyProcessingClass *handler = GetProcessor();
if (handler != NULL)
{
handler->onReceive(Server, Client);
}
}
Dzięki i dziękuję za tę wspaniałą bibliotekę :) Do you happ pl wiedzieć, czy klasy serwera klienta działają w systemie iOS? Jeśli nie, czy masz zamiar dodać wsparcie? – jmasterx