我不确定这个关于Qt或C++的问题,我只是这两个的新手!
我有一个简单的Qt应用程序,有一个MainWindow和Hello类,如下所示:
hello.h
#ifndef HELLO_H
#define HELLO_H
#include <QWidget>
#include "mainwindow.h"
class Hello : public QWidget
{
Q_OBJECT
public:
explicit Hello(MainWindow *parent = 0);
signals:
public slots:
};
#endif // HELLO_H
Run Code Online (Sandbox Code Playgroud)
heloo.cpp
#include "hello.h"
Hello::Hello(MainWindow *parent) :
QWidget(parent)
{
//nothing here yet
}
Run Code Online (Sandbox Code Playgroud)
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QtGui/QMainWindow>
#include "hello.h"
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Hello* hi;
};
#endif // MAINWINDOW_H
Run Code Online (Sandbox Code Playgroud)
mainwindows.cpp
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
hi = new Hello(this);
}
MainWindow::~MainWindow()
{
}
Run Code Online (Sandbox Code Playgroud)
main.cpp中
#include <QtGui/QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
Run Code Online (Sandbox Code Playgroud)
这是我构建项目时的错误:
来自../untitled1/main.cpp:2:../untitled1/hello.h:11:错误:预期')'在'*'之前
并且该行导致错误是:
explicit Hello(MainWindow *parent = 0);
Run Code Online (Sandbox Code Playgroud)
你能帮我解决一下这个问题吗?
谢谢!
您在"hello.h"和"maindwindow.h"中循环包含头文件.您只需使用指针就不需要在头文件中包含这些文件.一个简单的前向声明,例如class MainWindow;"hello.h"就足够了.