gpt4 book ai didi

c++ - 函数模板重载 : link error

转载 作者:行者123 更新时间:2023-11-30 03:10:59 25 4
gpt4 key购买 nike

我正在尝试按如下方式重载“显示”方法:

template <typename T> void imShow(T* img, int ImgW, int ImgH);
template <typename T1, typename T2> void imShow(T1* img1, T2* img2, int ImgW, int ImgH);

然后我用 unsigned char* im1 和 char* im2 调用模板:

imShow(im1, im2, ImgW, ImgH);

这编译正常,但我收到链接错误“未解析的外部符号”:

imShow<unsigned char,char>(unsigned char *,char *,int,int)

我不明白我做错了什么!

最佳答案

如果您的编译器没有“导出”模板功能(只有基于 EDG 前端的编译器有,GCC 和 MSVC 没有),您需要在头文件中定义该模板。您也可以在 .cpp 文件中显式实例化函数模板(如果您将其定义放在那里):

template void imShow(unsigned char* img1, char* img2, int ImgW, int ImgH);

但是一旦你传递了另一对你没有像那样显式实例化的类型,它再次无法链接。所以你需要把函数模板的定义放在头文件中,这样编译器在调用函数时就能看到它,并实例化函数本身的一个拷贝。

关于c++ - 函数模板重载 : link error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2699336/

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