SQLite 的sqlite3_exec和作为类成员的回调

SQLite's sqlite3_exec and callback as class member

本文关键字:回调 成员 sqlite3 exec SQLite      更新时间:2023-10-16

我正在尝试

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);
}

但是callback不调用。如果a这样做

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

一切都好。有人知道如何解决这个问题吗?

PS不好意思

由于ReadSelfFromBase是一个静态函数,因此Foo::ReadSelfFromBase在Bar方法中的工作方式应该与在main方法中的工作方式相同。

最好在任何你想要的地方使用Foo::ReadSelfFromBase,你知道,它是静态的。