gpt4 book ai didi

c++ - 我应该如何为 DLL 使用此模板函数显式实例化?

转载 作者:行者123 更新时间:2023-11-30 01:30:45 28 4
gpt4 key购买 nike

我有以下类和模板函数:

template <size_t num>
class String{
public:
char charArray[num];
};

template <size_t num,typename T>
void getString(String<num> & string,T number){
cout <<string.charArray<<' '<<number<<'\n';
}

然后我尝试如下所示进行显式实例化以将该实例化导出到 DLL,但最后发现它根本没有被实例化,因为我在我的位置得到了链接器未解析的外部符号的链接器错误即将导入并使用该函数(确切的链接器错误:“未解析的外部符号”__declspec(dllimport)void _cdecl getString<5>(class String<5> &,unsigned char) (_imp_??$getString@$04@@YAXAAV?$String@$04@@E@Z)") 因为在我打算实例化的时候没有指定“num”;一开始我想可能是因为 String<num> & string 将被实现为一个指针,所以下面的语法将是一个实例化,但似乎我错了。

template<size_t num> 
__declspec(dllexport) void getString(String<num> & string,unsigned char number);

现在你建议我应该如何进行实例化,因为我肯定不会对地球上发现的每个整数都进行实例化!!!。

最佳答案

如果它是一个您希望能够为任意参数实例化的函数模板,那么不要将它放在您的源文件中。而是将其放在头文件中。

强制链接:

关于c++ - 我应该如何为 DLL 使用此模板函数显式实例化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4131817/

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