找回密码
 立即注册

关于类的定义

查看数: 5378 | 评论数: 3 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-10-11 11:29

正文摘要:

图中定义class IDockWindow,在之前有class QDockWidget; class QIcon;这两句程序什么意思

回复

baizy77 发表于 2018-10-12 08:20:23
yangyang 发表于 2018-10-12 07:48
那“class QDockWidget”和include“QDockWidget”的意思是一样的吗?
还有class IDockWindow这句是定义了 ...

您可以看一下这篇帖子,专门介绍这个内容的。如何避免修改头文件时导致项目重新编译
此处的class QDockWidget仅仅告诉编译器QDockWidget这个类已经在别处定义,这行代码所在的头文件中,只要不用初始化这个类的对象(比如,QDockWidget dockWidget;)而是仅仅使用指针(比如,QDockWidget* pDockWidget),就可以采用这种方法,这叫做前向声明,编译器并不能看到QDockWidget的类定义,也就是告诉编译器在解析本文件后面的代码时碰到QDockWidget*的指针时可以认为是合法的而不是被当作未定义对象,在头文件中使用前向声明时,在cpp中就要使用#include <QDockWidget>,否则编译器会提示找不到QDockWidget的定义。
而在头文件中直接使用#include <QDockWdiget>就不同了,编译器会将整个<QDockWidget>头文件引入并解析,编译器会看到完整的QDockWidget的类定义,
yangyang 发表于 2018-10-12 07:48:26
那“class QDockWidget”和include“QDockWidget”的意思是一样的吗?
还有class IDockWindow这句是定义了一个新的类但是没有继承任何类的属性吗?

点评

您可以看一下这篇帖子,专门介绍这个内容的。如何避免修改头文件时导致项目重新编译 此处的class QDockWidget仅仅告诉编译器QDockWidget这个类已经在别处定义,这行代码所在的头文件中,只要不用初始化这个类的对象  详情 回复 发表于 2018-10-12 08:20
hjm@123 发表于 2018-10-11 15:58:54
这叫做前置声明,在.cpp文件中有包含这两个类的头文件

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了