0

我有一个错误,即使我有保护标头,我也无法将我的头文件包含在多个 cpp 中。当从 main 中删除 DatabaseManager 的包含时,ccode 构建得很好

这是头文件:

#ifndef DATABASEMANAGER_H
#define DATABASEMANAGER_H
#include <QSqlDatabase>
#include <QSqlQuery>
class DatabaseManager
{
 private:
    QSqlDatabase PatternLibrary;
    QSqlQuery query;
 public:
  DatabaseManager();
};
#endif

这是.cpp:

#include "DatabaseManager.h"
#include <QSqlError>
#include <QDebug>

DatabaseManager::DatabaseManager()
{
}

这是主要的:

#include "DatabaseManager.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    DatabaseManager x;
    MainWindow w;
    w.show();

    return a.exec();
}

给出这些错误:

/Code/DB_RangePattern-build-desktop-Qt_4_8_1_in_PATH_ System _Debug/../DB_RangePattern/main.cpp:6: 错误:首先在这里定义

collect2: ld 返回 1 个退出状态

4

2 回答 2

1

您只发布了一个较大的错误,但我可以冒险猜测问题所在。您似乎不确定您的班级是DataBaseManager还是DatabaseManager(注意大写的变化B)。

此外,如果您的头文件与其他源文件一起使用,请确保您正在执行#include "DatabaseManager.h"(不使用<and >)。

于 2013-03-15T20:44:02.590 回答
0

我很确定 QSqlDatabase 使用/包含 QSqlError 因为它有一个定义的公共函数

QSqlError   lastError () const

并且重新定义将来自您的包括 QSqlError

于 2013-03-15T20:47:55.173 回答