我在标题Ah中定义了以下类:
class A {
private:
template<int i>
void method();
};
Run Code Online (Sandbox Code Playgroud)
我有什么办法可以method使用通常的方法实现将实现保留在自己的A.cpp文件中?我问这个问题是因为将实现放在一个Ah中会使接口很难阅读,特别是因为它是私有函数。
仅在重要的情况下才使用“ i”的有限值进行实例化
您可以执行以下操作(这是广泛使用的做法):
丙型肝炎
class A {
private:
template<int i>
void method();
};
#include "A.tcc"
Run Code Online (Sandbox Code Playgroud)
tcc
template<int i>
void A::method() {
// do something with i
}
Run Code Online (Sandbox Code Playgroud)
请注意,使用不同的扩展名来命名实现文件很重要.cpp,因为这会使大多数标准构建系统环境感到困惑(除非您完全手动选择了翻译单元文件)。
如果您想为的某些值i提供专门的实现,则可以按以下方式提供它们:
// Specialization for 1
template<>
void A::method<1>() {
// do something for specialization with 1
}
template<>
void A::method<2>() {
// do something for specialization with 2
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1755 次 |
| 最近记录: |