当前位置: 代码迷 >> QT开发 >> Qt向前声明编译异常
  详细解决方案

Qt向前声明编译异常

热度:327   发布时间:2016-04-25 02:57:45.0
Qt向前声明编译错误
error: forward declaration of 'struct QLabel'错误提示

我在头文件中向前声明了类QLabel,编译时就出现这个错误。

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
class QLabel;
class QAction;

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
private slots:
    void open();

private:
    Ui::MainWindow *ui;
    QAction *openAction;
    QLabel *msgLabel;
};

#endif // MAINWINDOW_H

头文件代码,刚开始只向前声明QAction时编译能通过,加了个QLabel就不行了

------解决思路----------------------
完整的错误信息是什么?

是不是在使用QLabel 的时候,你仍然没有包含头文件
------解决思路----------------------
在cpp中还是要包含的 不然,编译器怎么知道到哪儿链接你要的类
------解决思路----------------------
引用:
向前声明了以后,不是就不用包含头文件了么


看来你没整明白为啥要前向声明。前向声明是为了加快编译速度以及降低依赖关系。所以,你要是在真正使用的地方不包含相关头文件的话,当然报错
  相关解决方案