C ++ Qt - странное поведение, когда атрибут класса T имеет родителя T - PullRequest
0 голосов
/ 02 декабря 2011

Не уверен, что эта проблема с 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

heloo.cpp

#include "hello.h"

Hello::Hello(MainWindow *parent) :
    QWidget(parent)
{
//nothing here yet
}

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

mainwindows.cpp

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    hi = new Hello(this);
}

MainWindow::~MainWindow()
{

}

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();
}

и вот ошибка при создании проекта:

от ../untitled1/main.cpp:2: ../untitled1/hello.h:11: ошибка: ожидается ')' до '*' токена

истрока причины ошибки:

explicit Hello(MainWindow *parent = 0);

Можете ли вы помочь мне решить проблему!
Спасибо!

1 Ответ

6 голосов
/ 02 декабря 2011

У вас есть циклическое включение заголовочных файлов в "hello.h" и "maindwindow.h".Нет необходимости включать эти файлы в заголовочный файл, так как вы просто используете указатель.Достаточно простого форвардного объявления, такого как class MainWindow; в "hello.h".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...