如何使用非静态成员函数作为函数的指针?

时间:2014-05-07 08:59:59

标签: c++ live555

我正在编写RTSP客户端并在使用

创建它之后
class RtspClientManager
{
private:
    rtsp_client;
    void continueAfterDescribe(RTSPClient* rtspClient, int resultCode, char* resultString);
}

...

rtsp_client = RTSPClient::createNew(*env, szUrl);

我发送了describe命令:

rtsp_client->sendDescribeCommand(continueAfterDescribe);

我希望continueAfterDescribeRtspClientManager::continueAfterDescribe实例成员,并且可以访问所有成员。

当然continueAfterDescribe可以是静态成员函数,但之后我只能访问静态成员。如何将指针传递给非静态成员函数并访问RtspClientManager中的所有实例成员?

RTSPClient方法sendDescribeCommand具有这样的签名:

unsigned RTSPClient::sendDescribeCommand(responseHandler* responseHandler);

typedef void (responseHandler)(RTSPClient* rtspClient,
             int resultCode, char* resultString);

1 个答案:

答案 0 :(得分:0)

你不能。您必须使用static功能。但在您的情况下,您可以将RtspClientManager对象作为参数传递给函数,然后使用该对象的其他方法/成员。你的声明也不正确,它们应该是这样的:

typedef void (*responseHandler)(RTSPClient* rtspClient,
         int resultCode, char* resultString);

unsigned RTSPClient::sendDescribeCommand(responseHandler responseHandler);