4
我有一个模板类,它仅适用于夫妇的模板参数:如何在不创建对象实例的情况下强制创建模板代码?
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;
但这会导致各种麻烦的(前主动态存储器分配被输入),我实际上不想创建一个实例 - 我只想为模板实例化生成对象代码。
任何想法?
当然,显式实例化是要走的路。只需将它们放入doIt.cpp:template class doer; template class doer ; –
2008-12-25 00:12:22