我在头文件 A.h 中定义了以下类:
class A {
private:
template<int i>
void method();
};
有没有办法让我将method
的实现保留在A.cpp文件中,像通常的方法一样? 我问这个问题是因为将实现放在A.h中会使接口非常难以阅读,特别是因为它是一个私有函数。
如果只使用有限的“i”值来实例化它,那么这是否有影响呢?
我在头文件 A.h 中定义了以下类:
class A {
private:
template<int i>
void method();
};
有没有办法让我将method
的实现保留在A.cpp文件中,像通常的方法一样? 我问这个问题是因为将实现放在A.h中会使接口非常难以阅读,特别是因为它是一个私有函数。
如果只使用有限的“i”值来实例化它,那么这是否有影响呢?
class A {
private:
template<int i>
void method();
};
#include "A.tcc"
A.tcc
template<int i>
void A::method() {
// do something with i
}
请注意,实现文件的命名应与.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
}