c++ - Qt 与 SQLite 中的静态链接问题

标签 c++ qt static

我的 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/

相关文章:

python - PyQT:PushButton 在禁用时接收命令

Qt 5 ODBC 驱动问题

java - "UntypedActor"deprecated in Akka (Java) Tutorial 的解决方案

objective-c - Objective-C中的静态构造函数等效?

php - 将 PHP 页面转换为静态 HTML 页面的最简单方法

c++ - Visual Studio - 启用优化导致崩溃

c++ - 如何运行多个 QTest 类?

c++ - 如何区分合法大小为 1 的类和空类?

c++ - 为类/信息隐藏创建内部和外部接口(interface)

C++ const void* 转换