类模板的问题!

umbrella1984 2004-09-21 11:41:27
template<class type>class abcd{
public:
void gg(type,type);
};

template<class type>void gg(type a,type b){
type c=a*b;
cout<<c<<endl;
}

int main(int argc, char* argv[])

{
abcd<int> ho;

ho.gg(1,2);
return 1;
}

编译的时候出错,提示说:

ha.obj : error LNK2001: unresolved external symbol "public: int __thiscall abcd<int>::gg(int,int)" (?gg@?$abcd@H@@QAEHHH@Z)
Debug/ha.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

怎么回事?代码好象没错啊。
...全文
161 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cxc014 2004-09-21
  • 打赏
  • 举报
回复
请问上面这句里的abcd<type>是什么意思?为什么类名后面还要加<type>??

这样编译器才知道它是一个模板类(adcd<Type>)的成员啊,不然它就以为是普通的类了,所以解析出错
bm1408 2004-09-21
  • 打赏
  • 举报
回复
template<class type>void gg(type a,type b){
type c=a*b;
cout<<c<<endl;
}
这是一个函数模板,如果你想把它声明为你的友元的话,
一般情况是:
template<class type>void abcd<type>::gg(type a,type b)
这种形式,这样就可以达到一对一的关系!
umbrella1984 2004-09-21
  • 打赏
  • 举报
回复
template<class type>void abcd<type>::gg(type a,type b)

谢谢,请问上面这句里的abcd<type>是什么意思?为什么类名后面还要加<type>??
qwertasdfg123 2004-09-21
  • 打赏
  • 举报
回复
template<class type>void gg(type a,type b){
改为。
template<class type>void abcd<type>::gg(type a,type b)

gg是abcd的成员

64,671

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧