C++文件包含常见问题

第一类、全局变量包含。这类错误通常是由于重复包含了某种变量或类的声明,但是很多时候,我们需要在多个类中引用同样的变量,所以当然希望把这些数据写到一个文件中,然后在不同的类中include它。而这会直接导致“重定义错误”,解决办法如下:

以下是转载内容:C++中的全局变量

在C++中定义全局变量是应该尽量在.cpp文件中定义,而不要在.h 文件中 定义,定义好了之后,可以在.h文件中利用 extern关键字进行 声明.如果在.h文件中定义的话,多层包含可能会引起重复定义的错误.下面是一个示例
在base.cpp中定义全局变量
base.cpp
  1. int g_MaxTime;
  2. int g_MinTime;
  3. int g_MaxCount;
  4. int g_MinCount;

base.h

  1. extern int g_MaxTime;
  2. extern int g_MinTime;
  3. extern int g_MaxCount;
  4. extern int g_MinCount;

然后其他文件要使用这些变量的时候

只要#include "base.h"就可以了,而且不会引起重复定义的错误

第二类:各个类互包含。

解决方案转载自:类的互包含

假如有类A,B,C。
想在 A中包含 B和C的头文件。通常有两种方法 :
一是在A的头文件中添加
#include"B.h"
#include"C.h"
一是在A的.cpp中添加
#include"B.h"
#include"C.h"


但是二者有区别。


如果想在A的头文件中的类A的声明中定义B和C类型的对象指针的时候第一种方法是对的,但


是第二种方法是错的。


可以修改第二种方法使其也课编译成功:在类A的头文件中加入类B和C的前视声明。
class B;
class C;
此时在A的.cpp中包含B和C的头文件即可在A的头文件中生命B和C的对象指针。但是不可以声


明B和C的对象,因为A头文件中未包含B和C的类的定义实现,只是个前视声明。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值