“首先在此定义”错误

时间:2013-03-15 20:34:49

标签: c++ linux gcc qt-creator

我有一个错误,我不能在多个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_ 系统 _Debug /../ DB_RangePattern / main.cpp:6:错误:首先在这里定义

     

collect2:ld返回1退出状态

2 个答案:

答案 0 :(得分:1)

你只发布了一行更大的错误,但我可以猜测问题是什么。您似乎不确定您的课程是DataBaseManager还是DatabaseManager(请注意资本B的变化)。

此外,如果您的标题文件包含其余源文件,请确保您正在执行#include "DatabaseManager.h"(不使用<>)。

答案 1 :(得分:0)

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

QSqlError   lastError () const

和重新定义将来自您的包含QSqlError