我有一个模板类,它只对几个模板参数有效:
doIt.h:
// only int and float are valid T
template <typename T>
class doer
{
public:
void doIt();
}
我想隐藏.cpp文件中的实现(为了更快的编译,也因为它的专有):
doIt.cpp:
template <>
void doer<T>::doIt() { /* how to do it */ }
...并按如下方式使用它:use.cpp:
int main( int, char** )
{
doer<int>::doIt()
}
以上内容无法链接,因为void doer :: doIt(void)的实现从未在调用它的位置进行。
我可以强制将代码生成到doItv2.obj中,如下所示:
doIt_v2.cpp:
template <>
void doer<T>::doIt() { /* how to do it */ }
doer<int> a;
doer<real> b;
但是这会引起各种麻烦(在输入main之前动态内存分配),我实际上不想创建实例 - 我只想生成模板实例化的目标代码。
有什么想法吗?