找回密码
 立即注册
收起左侧

关于类的定义

3
回复
5288
查看
[复制链接]
累计签到:2 天
连续签到:1 天
来源: 2018-10-11 11:29:25 显示全部楼层 |阅读模式
1Qter豆
图中定义class IDockWindow,在之前有class QDockWidget; class QIcon;这两句程序什么意思

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册
回复

使用道具 举报

累计签到:41 天
连续签到:1 天
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的类定义,
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2018-10-12 07:48:26 显示全部楼层
那“class QDockWidget”和include“QDockWidget”的意思是一样的吗?
还有class IDockWindow这句是定义了一个新的类但是没有继承任何类的属性吗?

点评

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

使用道具 举报

累计签到:33 天
连续签到:1 天
2018-10-11 15:58:54 显示全部楼层
这叫做前置声明,在.cpp文件中有包含这两个类的头文件
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

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