forward declaration of class 错误
在使用Qt的时候遇到这个错误,查了一下发现,是因为我没有正确的使用前置声明。
1 #ifndef FIRSTPAGE_H 2 #define FIRSTPAGE_H 3 4 #include "ui_dialog.h" 5 //#include <QWizardPage> 6 class QWizardPage; 7 8 class FirstPage : public Ui::Dialog, public QWizardPage 9 { 10 public: 11 FirstPage(); 12 }; 13 14 #endif // FIRSTPAGE_H
引用了这位的博客 c++ forward declaration 上的说明,如下:
可以声明一个类而不定义它
class Screen;//declaration of the Screen class
这个声明,有时候被称为前向声明(forward declaration),在程序中引入了类类型的Screen.在声明之后,定义之前,类Screen是一个不完全类型(incompete type),即已知Screen是一个类型,但不知道包含哪些成员.
不完全类型只能以有限方式使用,不能定义该类型的对象,不完全类型只能用于定义指向该类型的指针及引用,或者用于声明(而不是定义)使用该类型作为形参类型或返回类型的函数.
也就是说我们使用前置声明是因为不想引入该类的头文件,但是前置声明是有限制的,也就是,只能用来定义前置声明类的指针或者引用。这里我继承了该类,而继承是需要了解类的内部结构的,所以造成了这个错我。
forward declaration of class 错误相关推荐
- error: invalid use of incomplete type 'XXXX' ;error: forward declaration of 'XXXX' 声明改为包含头文件
error: invalid use of incomplete type 'XXXX' error: forward declaration of XXXX 声明改为包含头文件 class XXXX ...
- Linux内核编程广泛使用的前向声明(Forward Declaration)
前向声明 编程定律 先强调一点: 在一切可能的场景,尽可能地使用前向声明(Forward Declaration).这符合信息隐蔽的原则. 一个例子 regmap 那么前向声明究竟是个什么鬼? 在内核 ...
- linux 没有windows.h头文件_宋宝华: Linux内核编程广泛使用的前向声明(Forward Declaration)...
本文系转载,著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者:宋宝华 来源: 微信公众号linux阅码场(id: linuxdev) 前向声明 编程定律 先强调一点:在一切可 ...
- 正确使用#include和前置声明(forward declaration)
差不多一年时间没用过C++写过程序了,由于工作的需要,我又回到了C++的阵形.在工作的过程中遇到了很多麻烦,当我往工程里加一个类,而且那个类又与工程里的类相关,如有那个类型的成员变量.情况如下 //A ...
- C++基础(1)- 声明(前向声明 Forward Declaration)与定义
C++基础(1)- 声明(前向声明 Forward Declaration)与定义 如需转载请标明出处:http://blog.csdn.net/itas109 技术交流:129518033 文章目录 ...
- Android 编译报XML declaration not well-formed错误的解决方法
项目上一秒还运行得好好的,下一秒编译却突然不成功,报如下错误 FAILURE: Build failed with an exception.* What went wrong: Execution ...
- linux c之加入了加入原文件 math.h调用abs()函数出现implicit declaration of function错误
今天在vim 写C语言的时候 代码我已经导入了#include<math.h> 但是当我调用ads()函数的时候出现了下面错误 解决办法: 把abs函数改写成fabs函数就行,然后去网上找 ...
- Receiver type ‘X’ for instance message is a forward declaration
引用的问题. ARC要求完整的前向引用,也就是说在MRC时代可能只需要在.h中申明@class就可以, 但是在ARC中如果调用某个子类中未覆盖的父类中的方法的话,必须对父类.h引用,否则无法编译. 在 ...
- 关于用turbo c 编译出现的 Declaration syntax error 错误 (未解决)
对着<深入体验c语言项目开发>中第一章编写俄罗斯方块这个游戏源代码将程序输进VC++,除去因为调用了turbo c 中的graphics.h ,而vc++中没有的这个库报错以外,没有报出其 ...
最新文章
- Data - 深入浅出学统计 - 下篇
- linux下解压缩文件中文乱码问题的解决
- 为什么不建议直接使用 Async 注解?
- Windows 2000/NT/XP管理员密码丢失解决方法
- ansible 安装和使用
- LSTM:《Long Short-Term Memory》的翻译并解读
- 加号和减号在一起怎么读_孩子粗心大意怎么治?告诉你背后的原因和好用的方法.........
- 奇虎360大战腾讯QQ 高潮迭起用户受伤
- 为什么农村出来的大学生大多混得比较差?
- abrtd:Executable ‘some execution‘ doesn‘t belong to any package and ProcessUnpackaged is set to ‘no‘
- java怎样将日期本土化_Java中的日期操作
- Git系列(七):使用Git管理二进制大对象
- 查看IIS哪个应用程序池占用CPU过高
- 无锡鼋头渚樱花颜色单调
- 洛谷 P2678 [NOIP2015提高组] 跳石头(二分答案)
- 贪吃蛇程序 php,PHP下利用PHPMailer Web程序【tofacebook.com】 - 贪吃蛇
- 算法:数组找出2个只出现一次的数字(其他元素出现两次)
- 关于sublime text4 和Google Chrome 的live reload插件
- a20 linux qt,全志A83T开发板,超树莓派/A20/A31S/banana pi M3/八核/Android5
- Swift游戏实战-跑酷熊猫 10 视差滚动背景