我想有一个指向sqlite3结构的静态指针,因此我可以打开一次与数据库的连接,在运行时执行一些查询,然后在程序导出关闭数据库连接。

(我链接了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.

}

我收到此错误:LNK2001:无法解析的外部符号“公共(public)静态结构sqlite3 * foo::db”...。

最佳答案

您有一个指向sqlite3的指针,因此正确的定义语法为

sqlite3* foo::db = nullptr;

要不就
sqlite3* foo::db;

请注意,在取消引用之前,必须使其指向有效的sqlite3对象。

关于c++ - 如何定义指向sqlite3结构的静态指针? C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25527690/

10-17 02:27