多个#include文件的类重新定义错误?(C++)
Class redefinition error with multiple #include files? (C++)
基本上这是:
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
相关文章:
- 使用命名空间时出现多个定义错误
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 尝试调用 .h 文件中定义的变量时出现变量未定义错误
- 在头文件和 cpp 文件中使用一次 #pragma 时出现结构重定义错误
- 链接阶段出现多重定义错误
- 避免模板类中的重定义错误
- 即使我没有包含多个文件,C++中的多个定义错误
- 跨多个类的全局变量而不会出现重定义错误?
- 尝试运行 wasm 函数时出现模块未定义错误
- C++ 预期的左大括号以及重定义错误
- C++:成员的越界声明必须是纯虚函数的定义错误
- c++中数组的未定义错误
- Visual C:模板类中的自定义错误消息
- 为什么C++模板不会导致多个定义错误?
- 只有一个定义/声明时标头声明变量的多堆定义错误
- C++ 在多个其他类中使用单个类 - 编译时出现多个定义错误
- 基类未定义.错误 C2504
- Q 斯坦达项重定义错误
- 可视化C++中的结构定义错误
- VC++ C2011 重定义错误 - 未使用的头文件