我正在使用sqlite3_exec
带有静态回调函数的 SQLite 函数来处理一些信息。我想将结果信息打印到一个名为sqlite3_exec
. 我说的有点像这样
class MakingTheCall{
static int CallBack(void *NotUsed, int argc, char **argv, char **azColName)
{
for(int x = 0; x < argc; x++)
File << argv[x];
File<<"\n";
}
private:
static ofstream File;
void call(){
sqlite3_exec(database, query, callback, 0, &zErrMsg);
}
};
我真正想要的是静态函数使用特定于实例的FILE
. 因此,无论哪个实例MakingTheCall
进行调用都会传递它唯一的非静态FILE
对象。
但是因为CallBack
是静态的并且必须(我认为)是一个回调,所以它无法访问this
类的指针。所以我的想法是如果函数所在的friend
函数那么它可以到达this
指针。这是假设我正确理解这篇文章。
我觉得我的思路有问题。感觉对于this
该函数将使用哪个功能可能仍然存在歧义。
作为本次讨论的第 2 部分,是否有任何地方可以使用静态朋友方法的示例?从我在第一条评论中阅读的内容来看,它们并不是互斥的修饰符,所以你什么时候会同时使用它们?
我是 SQLite 和 CallBacks 的新手,所以我可能会在这里遗漏一些可以让我的生活变得轻松的东西。像void*
指针我该如何使用它?感觉就像是我想做的事情的关键。
提前谢谢。