C++ 如何在不创建对象实例的情况下强制创建模板代码?
我有一个仅对两个模板参数有效的模板类: doIt.h:C++ 如何在不创建对象实例的情况下强制创建模板代码?,c++,C++,我有一个仅对两个模板参数有效的模板类: doIt.h: // only int and float are valid T template <typename T> class doer { public: void doIt(); } //只有int和float是有效的 模板 阶级实践者 { 公众: void doIt(); } 我想将实现隐藏在.cpp文件中(为了更快地编译,也因为它是专有的): doIt.cpp: template <> void doe
// only int and float are valid T
template <typename T>
class doer
{
public:
void doIt();
}
//只有int和float是有效的
模板
阶级实践者
{
公众:
void doIt();
}
我想将实现隐藏在.cpp文件中(为了更快地编译,也因为它是专有的):
doIt.cpp:
template <>
void doer<T>::doIt() { /* how to do it */ }
模板
void doer::doIt(){/*如何做*/}
。。。并按如下方式使用:use.cpp:
int main( int, char** )
{
doer<int>::doIt()
}
int main(int,char**)
{
doer::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;
模板
void doer::doIt(){/*如何做*/}
实干家a;
实干家b;
但这会引起各种各样的麻烦(在输入main之前动态分配内存),我实际上不想创建一个实例——我只想生成模板实例化的目标代码
有什么想法吗?见文章。我想您是在追求这里描述的第二种方法:显式模板实例化。当然,显式实例化是一种方法。只需将它们放入doIt.cpp:template类doer;模板类执行器;