2016-04-29 298 views
2

首先,我看到了一些解決方案,但我不明白它們。我是QT的新手,甚至谷歌也沒有幫助我。英語不是我的第一語言C2143:語法錯誤:缺少';'在'*'和C4430之前:缺少類型說明符 - 假定爲int。注意:C++不支持default-int

這是Qt Creator的調試後,該錯誤信息5.6

C2143: syntax error: missing ';' before '*'

C4430: missing type specifier - int assumed. Note: C++ does not support default-int

C2238: unexpected token(s) preceding ';'

這裏是文件

secdialog.h

#ifndef SECDIALOG_H 
#define SECDIALOG_H 

#include <QDialog> 
#include "tridialog.h" 
#include "quadialog.h" 

namespace Ui { 
class SecDialog; 
} 

class SecDialog : public QDialog 
{ 
    Q_OBJECT 

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

private slots: 
    void on_pushButton_5_clicked(); 

    void on_status_clicked(); 

    void on_pushButton_2_clicked(); 

    void on_zuteilung_clicked(); 

private: 
    Ui::SecDialog *ui; 

    TriDialog *triDialog; //this is the line with the problem 

    QuaDialog *quaDialog; // funny thing, he didn't complain about this line 

}; 

#endif // SECDIALOG_H 

很抱歉,如果這個問題已經出現在問題中,但我不瞭解其他解決方案。

我試圖做一個小程序只是爲了顯示,它只需要顯示一些形式,多數民衆贊成它。有一些按鈕,每個按鈕打開另一個窗體並隱藏之前的窗體。

我的問題是,我總是遇到編程和語言方面的問題,通常我不知道足夠了解解決方案,我更像是「有人告訴我如何,然後使用它並理解它」我通過「複製粘貼」學習

有誰能告訴我我做錯了什麼嗎? 如果您需要更多關於該項目的信息,只需詢問。

預先感謝您。

這裏請求tridialog.h

#ifndef TRIDIALOG_H 
#define TRIDIALOG_H 

#include <QDialog> 
#include "secdialog.h" 


namespace Ui { 
class TriDialog; 
} 

class TriDialog : public QDialog 
{ 
    Q_OBJECT 

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

private slots: 
    void on_pushButton_5_clicked(); 

private: 
    Ui::TriDialog *ui; 
    TriDialog *triDialog; 
}; 

#endif // TRIDIALOG_H 

這裏是QT kraftwerk.zip

+0

''tridialog.h''是什麼樣的? – Barry

+0

編輯帖子... tridialog.h現在有 – Tareen

+0

@barry這是合法的嗎? '明確的TriDialog(QWidget * parent = 0);' –

回答

3

您的問題,整個項目是在tridialog.h

#include "secdialog.h" 

如果包括secdialog.h,你帶在你的SecDialog類聲明中,它有一個TriDialog指針(在有問題的lin e)在聲明TriDialog類之前!

既然你實際上並不需要在tridialog.hsecdialog.h什麼,只是刪除

#include "secdialog.h" 

,它應該工作。

+1

好的。這看起來像Tareen正在尋找的問題。 –

+0

當我刪除#include後面的errorcode來 – Tareen

+0

moc_secdialog.obj:-1:Fehler:LNK2019:無法解析的外部符號「private:void __cdecl SecDialog :: on_pushButton_2_clicked(void)」(?on_pushButton_2_clicked @ SecDialog @@ AEAAXXZ)在函數中引用「private:static void __cdecl SecDialog :: qt_static_metacall(class QObject *,enum QMetaObject :: Call,int,void * *)」(?qt_static_metacall @ SecDialog @@ CAXPEAVQObject @@ W4Call @ QMetaObject @@ HPEAPEAX @ Z) – Tareen

1

它看起來像你有一個範圍界定的錯誤,除非我誤解你的意圖。此代碼:

namespace Ui { 
    class TriDialog; 
} 

class TriDialog : public QDialog 
{}; 

聲明瞭一個命名空間中的Ui命名TriDialog類,然後聲明瞭一個名爲TriDialog命名空間Ui課外。你現在有兩個班,Ui::TriDialogTriDialog。您需要將整個定義放入命名空間範圍內。

編輯: 看起來像skearney發現你所問的錯誤,但這仍然是一個問題。

相關問題