SQLite sqlite3_exec и обратный вызов в качестве члена класса - PullRequest
0 голосов
/ 21 октября 2011

Я пытаюсь это сделать

class Foo
{
 static int ReadSelfFromBase(void *userarg, int argc, char **argv, char **ColName){...}

public:
 void Bar(sqlite3* db)
 {
 ...
 rc = sqlite3_exec(db, "select * from test", &ReadSelfFromBase, this, &zErrMsg);
 ...
 }
}

int main()
{
Foo test;
...
test.Bar(db);
}

Но обратный вызов не вызывает.Если сделать это

int main()
{
 rc = sqlite3_exec(db, "select * from test", Foo::ReadSelfFromBase, NULL, &zErrMsg);
}

, то все хорошо.Кто-нибудь знает, как решить эту проблему

PS Извините за плохой английский

Ответы [ 2 ]

2 голосов
/ 21 октября 2011

Поскольку ReadSelfFromBase является статической функцией, Foo :: ReadSelfFromBase должен работать в методе Bar так же, как и в main.

1 голос
/ 17 мая 2012

лучше использовать Foo::ReadSelfFromBase в любом месте, вы знаете, это статично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...