我的C ++应用程序中存在静态链接问题。我希望你能提供帮助。下面的标题和来源代码。
#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 ++。
答案 0 :(得分:4)
当您与声明分开定义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()
函数的范围。
答案 1 :(得分:2)
从static
文件中删除cpp
声明,它应该只在header
文件中。像:
bool PractiCardsDB::createConnection()
{
....
}