静态成员函数作为函数的指针?

我正在编写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