Как использовать нестатическую функцию-член в качестве указателя на функцию?

Я пишу 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 as RtspClientManager::continueAfterDescribe и иметь доступ ко всем членам.

Конечно, continueAfterDescribe может быть статической функцией-членом, но тогда у меня будет доступ только к статическим членам. Как передать указатель на нестатическую функцию-член и получить доступ ко всем членам экземпляра в RtspClientManager??

Метод sendDescribeCommand RTSPClient имеет такую ​​сигнатуру:

unsigned RTSPClient::sendDescribeCommand(responseHandler* responseHandler);

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

person PawelZ    schedule 07.05.2014    source источник
comment
RTSPClient твой класс? или библиотечный класс?   -  person ikh    schedule 07.05.2014


Ответы (1)


Вы не можете. Вы должны использовать функцию static. Но в вашей ситуации вы можете передать объект RtspClientManager в качестве параметра функции, а затем использовать другие методы/члены этого объекта. Также ваши декларации неверны, они должны быть такими:

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

unsigned RTSPClient::sendDescribeCommand(responseHandler responseHandler);
person Rakib    schedule 07.05.2014