正确使用#include和前置声明(forward declaration)
/Man.h///
#pragma once
//#include "person.h" // 去掉
class Man : public Person
{
public :
Man(void);
~Man(void);
private :
Person child;
};
|
/Man.h///
#pragma once
//#include "person.h" // 去掉
class Person; // 加入
class Man:public Person
{
public :
Man(void);
~Man(void);
private :
Person child;
};
|
error C2504: “Person” : 未定义基类
|
error C2504: “Person” : 未定义基类
|
/Man.h///
#pragma once
//#include "person.h" // 去掉
class Person; // 加入
class Man:public Person
{
public :
Man(void);
~Man(void);
private :
Person *child; // 改为指针
};
|
/Man.h///
#pragma once
//#include "person.h" // 去掉
class Person; // 加入
class Man // 去掉:Person
{
public :
Man(void);
~Man(void);
private :
Person *child; // 改为指针
};
|
error C2504: “Person” : 未定义基类
|
编译通过
|
public Person;
Person.h/
#pragma once
class Person
{
public :
Person(void);
~Person(void);
virtual void addChild(Person p) = 0;// 将Person变为抽象类
};
|
/Man.h///
#pragma once
//#include "person.h" // 去掉
class Person; // 加入
class Man // 去掉:Person
{
public :
Man(void);
~Man(void);
private :
Person *child;
void addChild(Person p);// 相应地在Man.cpp中加上这个空函数
};
|
error C2259: “Person” : 不能实例化抽象类
|
|
/Man.h///
#pragma once
#include "person.h" // 加回来
class Person; // 加不加入也没所谓
class Man // 去掉:Person
{
public :
Man(void);
~Man(void);
private :
Person *child;
void addChild(Person p);// 相应地在Man.cpp中加上这个空函数
};
|
/Man.h///
#pragma once
#include "person.h" // 加回来
class Person; // 加不加入也没所谓
class Man // 去掉:Person
{
public :
Man(void);
~Man(void);
private :
Person *child;
void addChild(Person *p);// 将形参变为Person*
};
|
error C2259: “Person” : 不能实例化抽象类
|
编译成功
|
/Man.h///
#pragma once
#include "person.h" // 加回来
class Person; // 加不加入也没所谓
class Man // 去掉:Person
{
public :
Man(void);
~Man(void);
private :
Person *child;
void addChild(Person &p);// 将形参变为Person&
};
|
|
编译成功
|
正确使用#include和前置声明(forward declaration)相关推荐
- Linux内核编程广泛使用的前向声明(Forward Declaration)
前向声明 编程定律 先强调一点: 在一切可能的场景,尽可能地使用前向声明(Forward Declaration).这符合信息隐蔽的原则. 一个例子 regmap 那么前向声明究竟是个什么鬼? 在内核 ...
- linux 没有windows.h头文件_宋宝华: Linux内核编程广泛使用的前向声明(Forward Declaration)...
本文系转载,著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者:宋宝华 来源: 微信公众号linux阅码场(id: linuxdev) 前向声明 编程定律 先强调一点:在一切可 ...
- C++基础(1)- 声明(前向声明 Forward Declaration)与定义
C++基础(1)- 声明(前向声明 Forward Declaration)与定义 如需转载请标明出处:http://blog.csdn.net/itas109 技术交流:129518033 文章目录 ...
- C++中前置声明介绍
前置声明是指对类.函数.模板或者结构体进行声明,仅仅是声明,不包含相关具体的定义.在很多场合我们可以用前置声明来代替#include语句. 类的前置声明只是告诉编译器这是一个类型,但无法告知类型的大小 ...
- c++ using 前置声明_C++ 类声明 类前置声明范例
在编写C++程序的时候,偶尔需要用到前置声明(Forward declaration).下面的程序中,带注释的那行就是类B的前置说明.这是必须的,因为类A中用到了类B,而类B的声明出现在类A的后面.如 ...
- C语言的结构体前置声明,?C语言的不完整类型和前置声明
声明与定义(Declaration and Definition) 开始这篇文章之前,我们先弄懂变量的declaration和definition的区别,即变量的声明和定义的区别. 一般情况下,我们这 ...
- forward declaration of class 错误
在使用Qt的时候遇到这个错误,查了一下发现,是因为我没有正确的使用前置声明. 1 #ifndef FIRSTPAGE_H 2 #define FIRSTPAGE_H 3 4 #include &quo ...
- 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 ...
- 使用类前置声明的好处-结合Qt 4一个主窗口实例讲解
本实例实现一个基本的主窗口程序,包含一个菜单条.一个工具栏.中央可编辑窗体及状态栏. 主窗口头文件代码如下: 1 #ifndef MAINWINDOW_H 2 #define MAINWINDOW_H ...
最新文章
- Log4Net的控制台,WinForm,WebApplication使用
- 万物皆可JOJO:这个GAN直接让马斯克不做人啦 !Demo在线可玩!
- go打造以太坊合约测试框架
- boost asio 简单示例
- Atom 插件备份--Sync Setting
- 如何在 ASP.NET CORE 中获取客户端 IP ?
- [html] 对于rtl网站的适配有哪些方案?
- py 字典添加多个value_# Python 3 # Python 3字典Dictionary(1)
- 通过导入txt数据画出python turtle图形_【Python】txt文件读取绘画
- 优秀REST风格 API的设计原则
- [原创]如何从数据库层面检测两表内容的一致性
- Prescan(一):无人驾驶仿真软件简介
- 如何做肌电信号手势识别?
- 彻底卸载McAfee Agent
- Ubuntu虚拟机下载(清华大学开源软件镜像源)
- 国内外免费公用mqtt测试服务器推荐
- 基于GoogleMap,Mapabc,51ditu,VirtualEarth,YahooMap Api接口的Jquery插件的通用实现(含源代码下载) --转...
- Linux下彻底删除oracle
- EZSP-UART 入门
- Confidence Propagation Cluster: 一个来自CVPR2022的目标检测涨点神器(CP-Cluster)
热门文章
- 阿里系App抓包分析(三)
- 利用Google Map显示指定位置地理位置
- Xrm.Page.data.entity Properties and Methods
- CentOS7.4配置OpenLDAP Client集成AD服务及SSSD服务与SSH服务
- python读json文件json.decoder.JSONDecodeError终极解决大法
- 启明云端分享|盘点ESP8684开发板有哪些功能
- 算法学习——数字旋转方阵
- 新型变色纹身自带传感器,联动手机APP可同时监测血糖、pH值、白蛋白含量
- 渭师院的计算机专业学什么课程,【三名+建设工作】渭南初级中学教师郭晓辉走进渭师院给大学生上课...
- Linux下 IPMItool配置方法(MSI主板)