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 错误

时间: 2024-10-12 23:16:56

forward declaration of class 错误的相关文章

Receiver &#39;NSManagedObjectContext&#39; for class message is a forward declaration 错误的解决方案

All the CoreData header files are imported in App_Prefix.pch, so the CoreData classes will be available throughout your Project, so you don't have to manually import the header in the files you need them. So open up Xcode and look for some file like 

解决QT:forward declaration of &#39;struct Ui::xxx&#39;;invalid use of incomplete struct &quot;Ui::Widget&quot; 等莫名奇妙错误

今天在进行QT Widget的UI设计时,改了下Widget的对象名,然后在多次成功编译运行后,执行清理,重新构建,就出现了好多莫名奇妙的错误: widget.h:12: 错误:forward declaration of 'struct Ui::Widget' widget.cpp:8: 错误:invalid use of incomplete type 'struct Ui::Widget' 网上搜索发现是每当你新键一个 QT设计界面, QT会自动生成yyy.ui文件,如Widget.ui,

解决QT:forward declaration of &amp;#39;struct Ui::xxx&amp;#39;;invalid use of incomplete struct &amp;quot;Ui::Widget&amp;quot; 等莫名奇异错误

今天在进行QT Widget的UI设计时,改了下Widget的对象名,然后在多次成功编译执行后,执行清理,又一次构建,就出现了好多莫名奇异的错误: widget.h:12: 错误:forward declaration of 'struct Ui::Widget' widget.cpp:8: 错误:invalid use of incomplete type 'struct Ui::Widget' 网上搜索发现是每当你新键一个 QT设计界面, QT会自己主动生成yyy.ui文件,如Widget.

Receiver type &#39;XXX&#39; for instance message is a forward declaration

今天遇到这个错误.刚开始字体太大,没显示全,后来调小字体之后看到了完整提示信息: 之后就忽然想起没引入相关的类,添加 #import "RDVTabBarItem.h" 就行了. Receiver type 'XXX' for instance message is a forward declaration

QT学习之forward declaration of &#39;struct Ui::xxx&#39;;invalid use of incomplete struct &quot;Ui::Widget&quot;

解决QT:forward declaration of 'struct Ui::xxx';invalid use of incomplete struct "Ui::Widget" 等莫名奇妙错误 今天在进行QT Widget的UI设计时,改了下Widget的对象名,然后在多次成功编译运行后,执行清理,重新构建,就出现了好多莫名奇妙的错误: widget.h:12: 错误:forward declaration of 'struct Ui::Widget' widget.cpp:8:

Receiver type ‘X’ for instance message is a forward declaration

本文出自:http://blog.csdn.net/svitter 实验环境:Myeclipse10 + tomcat7.0 有时间会写windows和linux下的tomcat配置,现在时间有限,暂且不写了..有些东西也是没有理解透彻. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <%@ page language="java" contentType="

不同namespace的forward declaration

C++中的forward declaration可以减少文件之间的依赖,加快编译速度. 在相同的namespace中,例如类B包含一个指向类A的指针或引用,类A的forward declaration写法如下: // b.hclass A; class B { A *pa; }; 今天遇到一个问题,就是A和B在不同的namespace中,不能按上面的写法来写. 正确的写法是在B的头文件写出A所在的namespace然后把前置声明放进去,写法如下: // a.hnamespace top { na

使用friend和forward declaration解决循环引用的问题

friend(友元)可以干什么 修饰对象之一:类 假如B是A的友元,B的成员函数可以访问A的所有成员,包括protect和private成员变量和成员函数,示例: class A { friend class B }; 修饰对象之二:普通函数 普通函数F是A的友元函数,则这个普通函数可以访问A的所有成员,示例: class A { friend void ::GlobalFunc(); } 修饰对象之三:其它类的成员函数 成员函数F是A的友元函数,则这个成员函数可以访问A的所有成员,示例: cl

jmeter beanshell Typed variable declaration : Object constructor错误

从数据库取值和响应值做比较,使用beanshell如下: import org.json.JSONArray; import org.json.JSONObject; res_str = prev.getResponseDataAsString(); JSONObject res_json_obj = new JSONObject(res_str); JSONArray dbd_json_array = new JSONArray("${dbd}"); // 数据库转json JSON