I'm writing program using sqlite. I've got class dataSend_task
, that periodicaly select data from BD and send it to server.
In dataSend_task
i've got method callback
, that I want to sent as argument to sqlite3_exec
.
I've got error:
error: cannot convert ‘std::function<int(void*, int, char**, char**)>’ to ‘int (*)(void*, int, char**, char**)’ for argument ‘3’ to ‘int sqlite3_exec(sqlite3*, const char*, int (*)(void*, int, char**, char**), void*, char**)’
if (sqlite3_exec(this->db, this->SQL_SELECT_READINGS_QUERY, callback, 0, &err)) {
Source code part:
int dataSend_task::callback(void *NotUsed, int argc, char **argv, char **columnName){...}
void dataSend_task::sendData()
{
using namespace std::placeholders;
std::function<int(void *, int, char **, char **)> callback =
std::bind(&dataSend_task::callback, this, _1, _2, _3, _4);
if (sqlite3_exec(this->db, this->SQL_SELECT_READINGS_QUERY,
callback, 0, &err))
{ ... }
}
As I understand problem is in converting callback
to type that sqlite_exec
accepts. But I don't know how to fix it.