undefined-reference在* .cpp中定义函数时出错,而不是在* .h中定义

时间:2015-05-12 07:45:02

标签: c++ qt class undefined-reference

我遇到了一个问题:我有两个课程: mainwindow ErgebnisAusFortran ,如下所示:

mainwindow.h:

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H   
    #include <QMainWindow>
    #include <QDebug>
    #include <QString>
    #include "ErgbnisAusFortran.h"        

    namespace Ui {
    class MainWindow;
    }

    class MainWindow : public QMainWindow
    {
        Q_OBJECT

    public:
        explicit MainWindow(QWidget *parent = 0);
        ~MainWindow();        

    public:
        ErgbnisAusFortran Berechnung();        
        ErgbnisAusFortran Berechnung_1()
        {
           ErgbnisAusFortran ret;
           qDebug() << " ich berechne Berechnung_1..." ;               
           return ret;
        }

    private slots:
        void on_pb_Calculate_clicked();      

    private:
        Ui::MainWindow *ui;
    };

    #endif // MAINWINDOW_H

mainwindow.cpp:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "ErgbnisAusFortran.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}


void MainWindow::on_pb_Calculate_clicked()
{
     ErgbnisAusFortran Ergebnis_1;
     ErgbnisAusFortran Ergebnis;
     Ergebnis_1 = Berechnung_1();
     Ergebnis = Berechnung();
}

ErgbnisAusFortran Berechnung()
{
    ErgbnisAusFortran ret;
    qDebug() << " ich berechne..." ;
    return ret;
}

令我困惑的是:

我有两种方法Berechnung()和Berechnung_1()。

Berechnung()在mainwindow.h中声明,在mainwindow.cpp中定义

Berechnung_1()在mainwindow.h中声明,在mainwindow.h中定义

当我运行该程序时,我得到关于Berechnung()的以下错误:

对MainWindow :: Berechnung()的未定义引用.Berechnung_1效果很好。这让我感到困惑,因为我在mainwindow.cpp中包含了mainwindow.h。

有人知道出了什么问题吗?

谢谢

itelly

1 个答案:

答案 0 :(得分:2)

您忘了限定成员函数的名称:

ErgbnisAusFortran MainWindow::Berechnung()
                  ^^^^^^^^^^^^

所以相反,它声明了一个新的非成员函数,使成员函数未定义。