Функция обратного вызова с aerospike_query_foreach, выдающая ошибку сборки

Я пытаюсь создать клиент C ++ для сервера aerospike. Я могу вставить данные, используя списки. Позже я хочу получить данные с помощью вызова aerospike_query_foreach. В этом вызове нам нужно отправить одну функцию обратного вызова. Я попытался отправить функцию обратного вызова с именем processresult, определенной в том же классе, с типом возврата bool. Но, это дает ошибку как несоответствие типов с библиотечной функцией. Код, который я написал

as_query query;
as_error error;
as_query_init(&query, pConfigInfo->inputNsName.c_str(), (*itr).c_str());
as_query_where_inita(&query, 1);
as_query_where(&query, "rawData", as_integer_range(startinterval,stopinterval));
//Execute the query for database specified.
if (aerospike_query_foreach(&m_asConnection, &error, NULL, &query, CDataBaseManager::ProcessResults, NULL) != AEROSPIKE_OK)
{
fprintf(stderr, "aerospike_query_foreach() returned %d - %s", err.code, err.message);
as_query_destroy(&query);
}

Моя функция обратного вызова

bool CDataBaseManager::ProcessResults(const as_val* p_val, void* udata)
{
if (! p_val)
{
fprintf(stderr, "query callback returned null - query is complete.");
return true;
}
}

Ошибка компиляции

database_manager.cpp:126:112: error: cannot convert âCDataBaseManager::ProcessResultsâ from type âbool (CDataBaseManager::)(const as_val*, void*) {aka bool (CDataBaseManager::)(const as_val_s*, void*)}â to type âaerospike_query_foreach_callback {aka bool (*)(const as_val_s*, void*)}â
if (aerospike_query_foreach(&m_asConnection, &error, NULL, &query, CDataBaseManager::ProcessResults, NULL) != AEROSPIKE_OK)
^
make: *** [database_manager.o] Error 1

Пожалуйста, направьте меня, если я делаю что-то не так в этом звонке?

1

Решение

Вы не должны использовать метод как «aerospike_query_foreach_callback».
Используйте функцию, которая не принадлежит ни одному пространству имен.
Например, измените вашу функцию на:

bool ProcessResults(const as_val* p_val, void* udata)
{
if (! p_val)
{
fprintf(stderr, "query callback returned null - query is complete.");
return true;
}
}

Назовите это как:

aerospike_query_foreach(&m_asConnection, &error, NULL, &query, ProcessResults, NULL)
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector