私があなたを正しく理解していれば、2つの異なる方法でそれを行うことができます。
このコールバック構造が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 );
}
}