2013-07-30 160 views
4

下面的代碼是拋出錯誤。我不知道爲什麼。任何人都可以點亮一下嗎? 所有的代碼都在不同的文件上。C2143:語法錯誤:缺少';'在'*'之前

#ifndef MAINSESSION_H 
#define MAINSESSION_H 
#include "sessionsuper.h" 
#include "mainwindow.h" 
class MainSession : public SessionSuper 
{ 
public: 
    MainSession(); 
private: 

}; 

#include "mainsession.h" 

MainSession::MainSession() 
{ 

} 

#endif // MAINSESSION_H 
#ifndef MAINWINDOW_H 
#define MAINWINDOW_H 
#include "mainsession.h" 
#include <QMainWindow> 

namespace Ui { 
class MainWindow; 
} 

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 

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

private: 
    Ui::MainWindow *ui; 
    MainSession *ms; //Error here 
}; 

#endif // MAINWINDOW_H 

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

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

MainWindow::~MainWindow() 
{ 
    delete ui; 
} 
#ifndef SESSIONSUPER_H 
#define SESSIONSUPER_H 

class SessionSuper 
{ 
public: 
    SessionSuper(); 
}; 

#endif // SESSIONSUPER_H 
#include "sessionsuper.h" 

SessionSuper::SessionSuper() 
{ 
} 

錯誤:使用Qt + msvc10.0編譯

d:\qtsrc\untitled4\mainwindow.h:20: error: C2143: syntax error : missing ';' before '*'

d:\qtsrc\untitled4\mainwindow.h:20: error: C4430: missing type specifier - int assumed. Note: C++ does not support default-int d:\qtsrc\untitled4\mainwindow.h:20: error: C4430: missing type specifier - int assumed. Note: C++ does not support default-int

上午。

更新: -

#ifndef MAINSESSION_H 
#define MAINSESSION_H 
#include "sessionsuper.h" 
#include "mainwindow.h" 
class MainSession : public SessionSuper 
{ 
public: 
    MainSession(MainWindow*); 
private: 
MainWindow *mw; 
}; 

#endif // MAINSESSION_H 
#ifndef MAINWINDOW_H 
#define MAINWINDOW_H 
#include "mainsession.h" 
#include <QMainWindow> 

namespace Ui { 
class MainWindow; 
} 

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 

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

private: 
    Ui::MainWindow *ui; 
    MainSession *ms; 
}; 

#endif // MAINWINDOW_H 
#ifndef SESSIONSUPER_H 
#define SESSIONSUPER_H 

class SessionSuper 
{ 
public: 
    SessionSuper(); 
}; 

#endif // SESSIONSUPER_H 
#include "mainwindow.h" 
#include <QApplication> 

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

    return a.exec(); 
} 
#include "mainsession.h" 

MainSession::MainSession(MainWindow mss) 
{ 
    mw=mss; 

} 
#include "mainwindow.h" 
#include "ui_mainwindow.h" 

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

MainWindow::~MainWindow() 
{ 
    delete ui; 
} 
#include "sessionsuper.h" 

SessionSuper::SessionSuper() 
{ 
} 

錯誤: - 多了很多,但同類型的

+0

顯示'mainwindow.h'的內容。 – devnull

+0

您顯示的代碼包含mainsession.h中的mainsessio.h請編輯帖子以使其更具意義 – stijn

+0

所有是不同的文件。 – Sayok88

回答

0

問題通過使用觀察者模型解決。

一個完整的演示Here

如果你想在上面的代碼的工作代碼添加評論。

乾杯!

4

你有圓形包括向前聲明MainSession類型打破目前circula包括問題。

在MainWindow.h

//#include "mainsession.h" comment out this line 

class MainSession;  // add forward declaration 
class MainWindow : public QMainWindow 
{ 
    //... 
    MainSession *ms; //Error here. 
}; 
+0

但是,如果我想將mainwindow(this)的一個對象傳遞給mainsession,會發生什麼?那麼我該怎麼做? – Sayok88

+0

通過引用或指針傳遞 - 仍然不需要完整的類型。 – billz

+0

我如何執行此代碼? '的#ifndef MAINSESSION_H 的#define MAINSESSION_H 的#include 「sessionsuper.h」 的#include 「mainwindow.h」 類MainSession:公共SessionSuper { 公共: MainSession(主窗口*); private: MainWindow * mw; }; #ENDIF // MAINSESSION_H 的#include 「mainsession.h」 MainSession :: MainSession(主窗口MSS) { MW = MSS; } ' – Sayok88

0

我檢查你的代碼是這樣的:

class MainWindow 
{ 
public: 
    explicit MainWindow(); 
    ~MainWindow(); 

private: 
    Ui::MainWindow *ui; 
    MainSession *ms; //My error also here <- see this 
}; 

在這裏看到我的代碼,其中MainSession失蹤,我在該行得到了同樣的錯誤。希望它會有所幫助。 MainSession定義可能由於文件丟失,文件不包含,範圍問題(另一個命名空間)等而丟失。請檢查這些。 namespace Ui(不同)可能是問題。

+0

http://stackoverflow.com/a/17947669/2138792 – Sayok88

相關問題