C++ Qt - Class T的属性为parent时的奇怪行为是T.

nvc*_*nvn 0 c++ qt

我不确定这个关于Qt或C++的问题,我只是这两个的新手!
我有一个简单的Qt应用程序,有一个MainWindowHello类,如下所示:

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)

你能帮我解决一下这个问题吗?
谢谢!

Nav*_*een 6

您在"hello.h"和"maindwindow.h"中循环包含头文件.您只需使用指针就不需要在头文件中包含这些文件.一个简单的前向声明,例如class MainWindow;"hello.h"就足够了.