【发布时间】:2021-08-21 14:47:28
【问题描述】:
我的头文件结构如下
base.h
/ \
/ \
utilities.h parameters.h
\ /
\ /
kernels.h
其中utilities.h 仅包含函数,parameters.h 包含类和函数模板以及它们的类型指定定义,即
// In parameters.h
// Function templates
template<typename T>
T transform_fxn(const T& value, std::string& method) { T a; return a; }
template<>
int transform_fxn(const int& value, std::string& method){
.....
}
template<>
double transform_fxn(const double& value, std::string& method){
.....
}
// Class templates
template<typename T>
class BaseParameter {
.....
}
template <typename T>
class Parameter;
template<>
class Parameter<double> : public BaseParameter<double> {
.....
}
template<>
class Parameter<int> : public BaseParameter<int> {
.....
}
kernels.h 文件需要utilities.h 中的参数和函数模板,但两者都依赖于base.h。如何避免在utilities.h 或parameters.h 中导入base.h?相反,什么是有效的导入方式?
【问题讨论】:
-
你标记了这个
circular-dependency,但我在这里看不到循环依赖。你在找include guards吗? -
到底是什么问题?双重包含通常不是问题,因为它被包含保护所阻止。
-
感谢您找不到此问题的书面条款。包括警卫就是其中之一。
标签: c++ include-guards