template ...

MikeDogSong 2003-11-17 10:35:12
List.h
-----------------------------
template <class T> class List
{
public:
List(); // constructor
};


List.cpp
---------------------------
template <class T>
List<T>::List()
{
}

#include "list.h"
main()
{
List<int> *p=new List<int>();// 编译错误如下:
/*TemplateSingleLinkedList.obj : error LNK2001: unresolved external symbol "public: __thiscall List<int>::List<int>(void)" (??0?$List@H@@QAE@XZ)*/
}

是说没有定义constructor!!!
为什么?难道template语法错了么?
...全文
33 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hpho 2003-11-18
  • 打赏
  • 举报
回复
因为你把LIST的声明和实现分开了两个文件(list.h, list.cpp),模板的声明和实现现阶段必须放在同一文件里。
Wolf0403 2003-11-18
  • 打赏
  • 举报
回复
对了,楼上正解。现在的编译器普遍不支持模板分离编译 export,所以必须放在同一个文件中
MikeDogSong 2003-11-18
  • 打赏
  • 举报
回复
明白
yuantao 2003-11-17
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;
template <class T>
class List
{
public:
List(); // constructor
};
template <class T>
List<T>::List()
{
}


int main()
{
List<int> t;
system("PAUSE");
return 0;
}
好好的啊,没问题,估计是你的main格式不对?
loveghb 2003-11-17
  • 打赏
  • 举报
回复
楼上的代码有区别吗?
我在DEV-CPP中测试过,没什么不妥的!
可能编译器对templete支持不好吧
proware 2003-11-17
  • 打赏
  • 举报
回复
改为
template <class T>
class List
{
public:
List(); // constructor
};

64,439

社区成员

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

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