如何定义指向sqlite3结构的静态指针? C++
问题描述:
我想要有指向sqlite3结构的静态指针,所以我可以打开与DB的连接一次,在运行时执行一些查询并在程序出口处关闭数据库连接。如何定义指向sqlite3结构的静态指针? C++
(我联系sqlite3的静态库,DLL)
所以在我的类的头:
了foo.h:
#include "sqlite/sqlite3.h"
class foo
{
public:
static sqlite3 *db;
static void connect();
}
Foo.cpp中:
#include "foo.h"
sqlite3 foo::*db = nullptr;
foo::connect(){
//sqlite3 *db; //<-this works
char *zErrMsg = 0;
int rc;
rc = sqlite3_open("test.db", &db);
if(rc){
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
exit(0);
}else{
fprintf(stderr, "Opened database successfully\n");
}
//sqlite3_close(db); // close connection when program is exiting. Not here.
}
我ge牛逼此错误:LNK2001:无法解析的外部符号“公共静态结构sqlite3的*富:: DB” ......
答
你有一个指向sqlite3
,所以正确的定义语法是
sqlite3* foo::db = nullptr;
或者只是
sqlite3* foo::db;
请注意,你必须让它去引用之前指向有效sqlite3
对象。
它的工作原理,谢谢:) – 2014-08-27 13:05:56