我在C ++的纯磁头库中遇到循环依赖问题,在使用源文件而不是只使用标题时,这不是循环依赖问题。
两个类A和B有四个文件。每个类都有它的头文件(例如“A.hpp”)及其实现文件(例如“A.tpp”)。
因此,在基于源代码的库中,包含和编译源文件的顺序如下所示:
我的文件以这种方式构建:
#ifndef A_H
#define A_H
#include "B.hpp"
class A { ... };
#include "A.tpp"
#endif
#ifndef A_H
#error "Do not include this file directly."
#endif
// ... some implementations for A.hpp
#ifndef B_H
#define B_H
class A;
class B { ... };
#include "B.tpp"
#endif
#include "A.hpp"
#ifndef B_H
#error "Do not include this file directly."
#endif
// ... some implementations for B.hpp
所以我的问题是:是否有一个解决方案可以打破这种无关紧要的循环依赖,这只是因为我正在为我的库使用仅限标题的解决方案?