在C ++中破坏循环引用更优雅

问题描述 投票:0回答:1

最近,当我的头文件相互包含时,我得到了很多循环依赖。另请参见此处: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;
};
c++ declaration forward-declaration cyclic-reference
1个回答
0
投票
所以您的代码将变成类似

#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

在所有头文件中执行此操作,因此每个文件最多加载一次,并且不再发生循环

© www.soinside.com 2019 - 2024. All rights reserved.