|
您可以看一下这篇帖子,专门介绍这个内容的。如何避免修改头文件时导致项目重新编译
此处的class QDockWidget仅仅告诉编译器QDockWidget这个类已经在别处定义,这行代码所在的头文件中,只要不用初始化这个类的对象(比如,QDockWidget dockWidget;)而是仅仅使用指针(比如,QDockWidget* pDockWidget),就可以采用这种方法,这叫做前向声明,编译器并不能看到QDockWidget的类定义,也就是告诉编译器在解析本文件后面的代码时碰到QDockWidget*的指针时可以认为是合法的而不是被当作未定义对象,在头文件中使用前向声明时,在cpp中就要使用#include <QDockWidget>,否则编译器会提示找不到QDockWidget的定义。
而在头文件中直接使用#include <QDockWdiget>就不同了,编译器会将整个<QDockWidget>头文件引入并解析,编译器会看到完整的QDockWidget的类定义, |
|