多个#include文件的类重新定义错误?(C++)

Class redefinition error with multiple #include files? (C++)

本文关键字:定义 错误 C++ 新定义 文件 #include 多个      更新时间:2023-10-16

基本上这是:

Car和Truck都源自Vehicle类。

Car.h

#include "Vehicle.h"
class Car : public Vehicle {
//blah blah blah

卡车.h

 #include "Vehicle.h"
 class Truck : public Vehicle {
 //blah blah blah

主要.cpp

#include "Car.h"
#include "Truck.h"

我的问题是,当我有#include行时,我在Truck上得到了一个类重新定义错误(由于它第二次调用Vehicle),但当我删除它时,我有"{token之前的预期类名"。

我明白Main->汽车->车辆主->卡车->车辆(重新定义)

将导致错误。

但如果我从Truck中删除#include"Vehicle.h",它也会导致另一个错误,它需要一个类名。

正如@ErikW所指出的,您需要使用include防护。看看这里和这里。

示例

Foo.h

#ifndef FOO_H // This needs to be unique in each header
#define FOO_H
... code goes in here ...
#endif