为什么转发的基本原理在同一个头中声明和定义?

时间:2014-01-22 18:00:05

标签: c++ qt

我正在学习QT,当我创建项目时,这是小部件类的标题:

#ifndef NOTEPAD_H
#define NOTEPAD_H

#include <QMainWindow>

namespace Ui {
class Notepad;
}

class Notepad : public QMainWindow
{
    Q_OBJECT

public:
explicit Notepad(QWidget *parent = 0);
~Notepad();

private:
Ui::Notepad *ui;
};

#endif // NOTEPAD_H    

为什么不在命名空间范围内定义类?这是最佳实践吗?

1 个答案:

答案 0 :(得分:4)

此代码正向声明Ui::Notepad,然后定义::Notepad它们不是同一类型,尽管它们具有相同的名称(这本身就是一个愚蠢的决定)。