如果我理解正确,你可以用两种不同的方式来做。
假设此回调结构使用 Data 参数允许您将自己的数据传递给回调函数(常见范例),您可以这样做:
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 );
}
}
或者,如果您需要处理数据指针而不是“用户数据指针”,那么您可能必须使用单例、某种全局变量或类似的东西。以我的经验,这是使用回调的一种不太常见的方式,希望这不是您要处理的。
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 );
}
}