我的 C++ 应用程序中存在静态链接问题。我希望你能帮忙。下面的 header 和源代码。
#ifndef PRACTICARDSDB_H
#define PRACTICARDSDB_H
#include "cardset.h"
#include "card.h"
#include "filter.h"
class PractiCardsDB
{
public:
PractiCardsDB();
static void resetAll();
static void resetDates();
static CardSet getCardSet();
static CardSet getCardSet(Filter filter);
static void addCard(Card card);
static void editCard(Card card);
static void deleteCard(Card card);
static bool createConnection();
};
#endif // PRACTICARDSDB_H
上面是头文件,下面是源文件。
#include "practicardsdb.h"
#include <QtSql/QSqlDatabase>
#include <QMessageBox>
PractiCardsDB::PractiCardsDB() {}
static bool PractiCardsDB::createConnection()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("EnglishSpanish");
if (!db.open())
{
return false;
}
return true;
}
我收到的错误是:无法将成员函数“static bool PractiCardsDB::createConnection()”声明为具有静态链接。有什么帮助吗?
如果有帮助,我会在 Qt Creator 中使用 Qt 4.7 和 C++。
最佳答案
当您从声明中单独定义一个static
成员函数时,您不必使用static
修饰符。
bool PractiCardsDB::createConnection()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("EnglishSpanish");
if (!db.open())
{
return false;
}
return true;
}
还有,你真的想让你的类的每一个函数都static
吗?您的类表示 Card
对象的各种数据库,所以我认为您实际上想要用类本身存储成员数据?
即使在上面的代码片段中,您创建了一个 QSqlDatabase
对象,但是 db
的存在只是 createConnection()
的范围功能。
关于c++ - Qt 与 SQLite 中的静态链接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4539228/