为什么Qt在头文件中包含现有类的空类定义?

时间:2009-07-20 12:12:11

标签: c++ qt

我正在阅读Qt页面上的示例,并想知道为什么他们在代码example中添加对现有类的引用:

#ifndef HTTPWINDOW_H
#define HTTPWINDOW_H

#include <QDialog>

class QFile;
class QHttp;
class QHttpResponseHeader;
class QLabel;
class QLineEdit;
class QProgressDialog;
class QPushButton;

class HttpWindow : public QDialog
{
...

3 个答案:

答案 0 :(得分:10)

这些是前瞻性声明。使用它们(在某些情况下)可以避免#include相关头文件的需要,从而加快编译速度。标准C ++库与<iosfwd>标题类似。

答案 1 :(得分:9)

这称为Forward Declaration

您可以参考this question here详细了解何时使用远期声明

答案 2 :(得分:1)

如上所述,这只是一个前瞻性声明。在头文件中,这些类通常会通过指针使用,因此在.cpp之前不需要完整的类声明。所以,例如你的标题可能会继续......

class HttpWindow : public QDialog
{

QFile *m_pFile;
QHttp *m_pHttp;
...
}