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

0 c++ header include

基本上是这样的:

Car 和 Truck 都派生自 Vehicle 类。

车.h

#include "Vehicle.h"
class Car : public Vehicle {
//blah blah blah
Run Code Online (Sandbox Code Playgroud)

卡车.h

 #include "Vehicle.h"
 class Truck : public Vehicle {
 //blah blah blah
Run Code Online (Sandbox Code Playgroud)

主程序

#include "Car.h"
#include "Truck.h"
Run Code Online (Sandbox Code Playgroud)

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

我得到了 Main -> Car -> Vehicle Main -> Truck -> Vehicle(重新定义)

会导致错误。

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

Jam*_*son 5

正如@ErikW 指出的那样,您需要使用包含守卫。请参阅此处此处

例子

foo.h

#ifndef FOO_H // This needs to be unique in each header
#define FOO_H

... code goes in here ...

#endif
Run Code Online (Sandbox Code Playgroud)