(C++)error:redefinition of ‘class XXX‘

2023年5月28日,周日早上:

今天早上写麻雀键值数据库时,编译代码的时候出现了这个错误


出现错误的原因:

你在定义你自己的头文件时,没有采用“Include Guards”(或者叫Head Guards)来避免头文件被重复包含。

有时候,在不同的源文件中都需要包含同一个头文件,这个头文件可能包含多个类的定义和其他一些代码。但是,如果源文件在编译时都包含了该头文件,则最终链接将产生重复符号错误(例如符号名称相同但地址不同的函数)。

解决办法:

把你的头文件的内容写在下面的代码中:

//下面是你的头文件的名字的大写形式
#ifndef YOURHEADFILENAME_H   //如果头文件没定义过,就执行下面的#define和endif之前的内容
#define YOURHEADFILENAME_H


//你的头文件的内容
class YourClass{

};

#endif

其实就是把整个头文件的内容包括在了ifndef...endif中,如果头文件没定义过,就执行define和define...endif中间的内容;如果头文件定义过了,就跳过整个ifndef...endif中间的内容,达到了当多个源文件都包含这个头文件时编译器编译时不会重复定义这个头文件的效果。

举例说明:

现在我要自定义一个叫做Car.h的头文件

#ifndef CAR_H
#define CAR_H

#include<iostream>

class Car{

private:
    std::string color;
    std::string owner;
};

#endif

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巨龙之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值