2013-07-30 138 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

相关问题