gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:41:18 27 4
gpt4 key购买 nike

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

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 之前进行动态内存分配),而且我实际上不想创建一个实例——我只想生成模板实例化的目标代码。

有什么想法吗?

最佳答案

参见文章 How to Organize Template Source Code .我认为您正在寻找那里描述的第二种方法:显式模板实例化。

关于c++ - 如何在不创建对象实例的情况下强制创建模板代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/392359/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com