最近,当我的头文件相互包含时,我得到了很多循环依赖。另请参见此处:What are forward declarations in C++?
我实际上并没有完全理解为什么它是一个循环。当编译器查看包含的头文件时,为什么它不能识别类声明?
是否有更优雅/其他方式来打破这些循环,而不是对其他类进行前向声明?我不喜欢在当前课程的前面还有另一个课程声明。例如:
#include "Wheel.h" // Include Wheel's definition so it can be used in Car.
#include <vector>
class Wheel;
class Car
{
std::vector<Wheel> wheels;
};
#ifndef CAR_H
#define CAR_H
#include "Wheel.h" // Include Wheel's definition so it can be used in Car.
#include <vector>
class Car
{
std::vector<Wheel> wheels;
};
#endif
在所有头文件中执行此操作,因此每个文件最多加载一次,并且不再发生循环