Как использовать функцию-член на основе класса в качестве функции обратного вызова в Curl_easy_setopt() в cppC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как использовать функцию-член на основе класса в качестве функции обратного вызова в Curl_easy_setopt() в cpp

Сообщение Anonymous »


Я пишу программу, в которой определил функцию обработчика событий как функцию-член класса в файле one.cpp. Мой собственный HTTP-клиент определен в другом файле Second.cpp.

Изначально я написал логику Curl внутри one.cpp

curl_easy_setopt( m_curl, CURLOPT_WRITEFUNCTION, EventHandler); Curl_easy_setopt(m_curl, CURLOPT_WRITEDATA, (void*) &eventHandlerInfo); Здесь EventHandler — это функция для обработки события. EventHandlerInfo — это структура

size_t EventHandler( void* ptr, размер size_t, size_t нмемб, EventHandlerInfo* eventHandlerInfo ) Этот код работал, но позже мы решили преобразовать one.cpp из стиля C в стиль на основе классов. impl вместе с интеграцией Curl из Second.cpp. (используя Second.h внутри one.cpp)

Наконец, теперь у нас есть файл one.cpp с функцией-членом EventHandler и файл secrond.cpp с функцией Get. Обертка запроса с логикой завитка. Нужно вызвать эту обертку в one.cpp

Я попробовал 3 способа, но ни один из них не сработал.
[*]Передать указатель функции в качестве аргумента оболочке GET в one.cpp [*]Отдельный обработчик событий из one.cpp позволяет создать функтор на основе класса, перегруженный оператором (). Использовал это непосредственно в Second.cpp. Я не получил никакой ошибки, но обратный вызов не работает. [*]Создал обобщенную лямбду в файле Second.cpp и напрямую передал ее в Curl_easy_setopt. Обратный звонок не сработал
Может кто-нибудь подсказать какой-нибудь способ? Было бы полезно.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»