3

我有以下非常简单的代码:

主文件

#include "ui_library_browser.h"
#include <QtGui/QApplication>
#include "StartWindow.h"
int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  StartWindow w;
  w.show();
  return a.exec();
}

开始窗口.h

#ifndef STARTWINDOW_H_
#define STARTWINDOW_H_

#include <qwidget>
#include "MainWindow.h"

class StartWindow : public QWidget
{ 
  Q_OBJECT

public:
  StartWindow();
  ~StartWindow();
  MainWindow main_window;  //<-- Problem
};
#endif

主窗口.h

#ifndef MAINWINDOW_H_
#define MAINWINDOW_H_

#include <qdialog.h>
#include "StartWindow.h"

class MainWindow : public QDialog
{
  Q_OBJECT

public:
  MainWindow();
  ~MainWindow();
};
#endif

我收到以下错误:

moc_MainWindow.cpp

StartWindow.h(14):错误 C2146:语法错误:缺少 ';' 在标识符“main_window”StartWindow.h(14) 之前:错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 StartWindow.h(14):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数

我以前写过一些 C++/Qt 应用程序,但我被这个迷住了!

提前致谢!

4

1 回答 1

10

您对标题有循环依赖。#include "StartWindow.h"从您的MainWindow.h文件中删除。

于 2011-07-04T16:01:39.600 回答