作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为 aerospike 服务器创建一个 C++ 客户端。我能够使用列表插入数据。稍后我想使用 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
请指导我,如果我在这次通话中做错了什么?
最佳答案
您不应将方法用作“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)
关于c++ - 带有 aerospike_query_foreach 的回调函数给出构建错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36894340/
我正在尝试为 aerospike 服务器创建一个 C++ 客户端。我能够使用列表插入数据。稍后我想使用 aerospike_query_foreach 调用检索数据。在这个调用中我们需要发送一个回调函
我是一名优秀的程序员,十分优秀!