当前位置:  开发笔记 > 编程语言 > 正文

如何在不创建对象实例的情况下强制创建模板代码?

如何解决《如何在不创建对象实例的情况下强制创建模板代码?》经验,为你挑选了1个好方法。

我有一个模板类,它只对几个模板参数有效:

doIt.h:

// only int and float are valid T
template 
class 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之前动态内存分配),而我实际上不想创建实例 - 我只想生成模板实例化的目标代码.

有任何想法吗?



1> Nemanja Trif..:

请参阅文章如何组织模板源代码.我认为你是在那里描述的第二种方法:显式模板实例化.

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有