【发布时间】:2014-11-20 17:01:08
【问题描述】:
我有一个带有此签名的回调(我正在使用 Live555):
typedef void(RTSPClient::responseHandler)(RTSPClient*, ...); //... = other parameters
然后在我的代码中,我按照库规则创建了一个 RTSPClient 的子类:
class MyRTSPClient: public RTSPClient {
...
//callback
void continueAfterDESCRIBE(RTSPClient *client, ...); //same signature of typedef
...
};
现在问题来了。
在我的代码中,我必须调用以下方法:
unsigned RTSPClient::sendDescribeCommand(responseHandler, ...); //response handler is the typedef
如果我创建一个对象:
MyRTSPClient *client = MyRTSPClient::createNew(...); //is library requirement such creation
如何将函数对象作为回调传递给sendDescribeCommand?
当然,如果我将continueAfterDESCRIBE 声明为静态成员,我没有任何问题,但我想要一个对象,因为我有很多线程,如果我使用从它们调用的静态回调,将会引发许多同步问题。
所以我(作为 C++ 的新手)正在苦苦挣扎如何找出正确的签名以将 obj->method 作为回调传递。
【问题讨论】: