2014-08-27 74 views
1

我想要有指向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” ......

回答

6

你有一个指向sqlite3,所以正确的定义语法是

sqlite3* foo::db = nullptr; 

或者只是

sqlite3* foo::db; 

请注意,你必须让它去引用之前指向有效sqlite3对象。

+0

它的工作原理,谢谢:) – 2014-08-27 13:05:56