静态成员函数作为函数的指针?
我正在编写RTSP客户端,并在创建之后
class RtspClientManager
{
private:
rtsp_client;
void continueAfterDescribe(RTSPClient* rtspClient, int resultCode, char* resultString);
}
...
rtsp_client = RTSPClient::createNew(*env, szUrl);
我正在发送描述命令:
rtsp_client->sendDescribeCommand(continueAfterDescribe);
我想有一个continueAfterDescribe
作为RtspClientManager::continueAfterDescribe
实例成员并可以访问所有成员。
当然, continueAfterDescribe
可以是一个静态成员函数,但是我只能访问静态成员。 如何将指针传递给非静态成员函数,并有权访问RtspClientManager中的所有实例成员?
RTSPClient方法sendDescribeCommand具有这样的签名:
unsigned RTSPClient::sendDescribeCommand(responseHandler* responseHandler);
typedef void (responseHandler)(RTSPClient* rtspClient,
int resultCode, char* resultString);
你不能。 你必须使用static
函数。 但是在你的情况下,你可以将一个RtspClientManager
对象作为参数传递给该函数,然后使用该对象的其他方法/成员。 你的声明也不正确,他们应该是这样的:
typedef void (*responseHandler)(RTSPClient* rtspClient,
int resultCode, char* resultString);
unsigned RTSPClient::sendDescribeCommand(responseHandler responseHandler);
链接地址: http://www.djcxy.com/p/96379.html
上一篇: static member function as pointer to a function?
下一篇: static class members of the latest created class instance