我有一个模板类,它只对几个模板参数有效:
doIt.h:
// only int and float are valid T templateclass doer { public: void doIt(); }
我想隐藏.cpp文件中的实现(为了更快的编译,也因为它的专有):
doIt.cpp:
template <> void doer::doIt() { /* how to do it */ }
...并按如下方式使用它:use.cpp:
int main( int, char** ) { doer::doIt() }
上面没有链接,因为void doer :: doIt(void)的实现从未在调用它的地方的范围内.
我可以强制将代码生成到doItv2.obj中,如下所示:
doIt_v2.cpp:
template <> void doer::doIt() { /* how to do it */ } doer a; doer b;
但这会导致各种令人头疼的事情(在输入main之前动态内存分配),而我实际上不想创建实例 - 我只想生成模板实例化的目标代码.
有任何想法吗?
请参阅文章如何组织模板源代码.我认为你是在那里描述的第二种方法:显式模板实例化.