新類class的定義中,類中函數的域名空間很重要!!!

 

2011-7-12

1、在mainwindow.h 中定義了一個class  MyMainWindow如下:

#ifndef MAINWINDOW_H

#define MAINWINDOW_H

 

#include <QtGui>

#include <QMainWindow>

#include "ui_scct.h"

class QAction;

class QMenu;

 

class MyMainWindow: public QMainWindow

{

     Q_OBJECT

public:

     MyMainWindow();

    

private:

     QTextCodec * fileMenu;

     QMenu * editMenu;

     Ui::MainWindow ui;

};

 

#endif //MAINWINDOW_H

 

2、在mainwindow.cpp文件中定義了MyMainWindow類構造函數的實現:

#include "mainwindow.h"

 

MyMainWindow::MyMainWindow()

{

    

     setWindowTitle(QMainWindow::tr("Stereo_Camera_Calibratin_Tool"));

     ui.setupUi(this);

    

//connect(ui.Spin

}

1)如果沒有黃色部分的域名前綴,則compile 時出錯,

1>moc_mainwindow.cpp

1>mainwindow.cpp

1>.\mainwindow.cpp(3) : error C2059: syntax error : ')'

1>.\mainwindow.cpp(4) : error C2143: syntax error : missing ';' before '{'

1>.\mainwindow.cpp(4) : error C2447: '{' : missing function header (old-style formal list?)

1>main.cpp

1>   Generating Code...

提示 在MyMainWindow()前應有前綴int,

2)如果變成 int  MyMainWindow()

{。。。。

……..

}

則 出現新的錯誤:

1>Compiling...

1>moc_mainwindow.cpp

1>mainwindow.cpp

1>.\mainwindow.cpp(6) : error C3861: 'setWindowTitle': identifier not found

1>.\mainwindow.cpp(7) : error C2065: 'ui' : undeclared identifier

1>.\mainwindow.cpp(7) : error C2228: left of '.setupUi' must have class/struct/union

1>        type is ''unknown-type''

1>.\mainwindow.cpp(7) : error C2673: 'MyMainWindow' : global functions do not have 'this' pointers

1>main.cpp

1>Generating Code...

1>Build log was saved at "file://d:\Experiment Data\Microsoft Visual Studio 9\scct\debug\BuildLog.htm"

1>   scct - 4 error(s), 0 warning(s)

3)如果在setWindowTitle前加上域名空間 QMainWindow::setWindowTitle()則又會出現如下錯誤:

1>moc_mainwindow.cpp

1>mainwindow.cpp

1>.\mainwindow.cpp(6) : error C2352: 'QWidget::setWindowTitle' : illegal call of non-static member function

1>        c:\qt\4.6.2\include\qtgui\qwidget.h(367) : see declaration of 'QWidget::setWindowTitle'

1>.\mainwindow.cpp(7) : error C2065: 'ui' : undeclared identifier

1>.\mainwindow.cpp(7) : error C2228: left of '.setupUi' must have class/struct/union

1>        type is ''unknown-type''

1>.\mainwindow.cpp(7) : error C2673: 'MyMainWindow' : global functions do not have 'this' pointers

1>main.cpp

1>   Generating Code...

同時, ui 這個ui 文件的實例(已經在mainwindow.h中定義Ui::MainWindow ui;)提示不能識別。所以 只有在構造函數前加上 類的域名空間 才能解決問題! 如:MyMainWindow::MyMainWindow()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章