“class”类型重定义 || 防止头文件重复加载 || 两个类之间互相引用

“class”类型重定义  :

  一般都是头文件重复include引起的。

防止头文件重复加载:

  系统那些头文件,无论怎么include都没事,因为一般都用了宏定义,防止重复。

  在头文件最上方写:

  #ifndef XXXXXXX (一个名字,尽量做到唯一)

  #define XXXXXXX (跟上边的名字一样)

  文件最后写:

  #endif

两个类之间互相引用:

  A.H:

  class A{

    B* b;

  }

  B.H:

  class B{

    A* b;

  }

  就这样互相include后,肯定会出错。

  需要在各自的声明前边,加上对方的声明,变成:

  A.H:

  class B;

  class A{

    B* b;

  }

  B.H:

  class A;

  class B{

    A* b;

  }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏上善若水

005android初级篇之jni 一个简单的报错No implementation found for

原因: public class JniSocket { static { System.loadLibrary("SmartSocket"); }

693
来自专栏青枫的专栏

day02_js学习笔记_01_js的简介、js的基本语法

622
来自专栏程序员互动联盟

C++调用C函数

前言:以前见到extern "C"这样的语句,只是简单地知道跟外部链接有关,但是没有深刻理解它的意思。 首先,为什么要使用extern "C"修饰符? C++调...

2594
来自专栏Golang语言社区

【Go 语言社区】Go语言类型转换

类型转换是一种可变从一种数据类型转换成另一种数据类型。例如,如果要存储一个long值转成一个简单的整数,那么可以强制类型转换long为int。可以从一种类型使用...

33614
来自专栏magicsoar

C++获取private的变量-偷走private

private提供了对数据的封装,使得private成员只能被类自身的成员函数以及类的友元访问,其他的函数或者类想要访问private成员只能通过该类所提供的s...

16510
来自专栏V站

PHP反序列化深入理解

在PHP中右serialize()和unserialize()两个函数,php里面的值都可以使用函数serialize()来返回一个包含字节流的字符串来表示。u...

1245
来自专栏计算机视觉与深度学习基础

Leetcode 268. Missing Number

Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find ...

19410
来自专栏Flutter入门

Kotlin中的延迟属性(lazy properties)

lazy() 是接受一个lambda 并返回一个 Lazy <T> 实例的函数,返回的实例可以作为实现延迟属性的委托。也就是说: 第一次调用get() 会执行...

1313
来自专栏ShaoYL

OC语言Block

32511
来自专栏白驹过隙

Python - 学习经验分享

28712

扫码关注云+社区