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

时间:2015-04-06 03:27:33

标签: c++ header include

基本上这个:

Car and Truck均来自Vehicle类。

Car.h

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

Truck.h

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

Main.cpp的

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

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

之前

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

会导致错误。

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

1 个答案:

答案 0 :(得分:2)

正如@ErikW指出你需要使用包含警卫。请参阅herehere

实施例

foo.h中

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

... code goes in here ...

#endif