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

文章介绍了在C++编程中,如何使用IncludeGuards(或HeadGuards)防止头文件被重复包含,从而避免编译错误。通过在头文件中使用预处理器宏,如#ifndef和#define,可以确保头文件内容只被编译一次,解决了重复定义的问题。文中给出了Car.h头文件的示例代码来说明这种方法。
摘要由CSDN通过智能技术生成

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

巨龙之路

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

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

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

打赏作者

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

抵扣说明:

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

余额充值