SQLite的sqlite3_exec和回调作为类成员

时间:2011-10-21 16:30:06

标签: c++ sqlite callback

我正在努力做到这一点

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 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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