小众知识

首页 > 正文

template模板操作

List.h
-----------------------------
template  class List
{
public:
 List();  // constructor
};


List.cpp
---------------------------
template  
List::List()
{
}

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

是说没有定义constructor!!!
为什么?难道template语法错了么?
 

 proware 发表于:2003-11-17 22:37:00
得分:0 

改为
template  
class List
{
public:
 List();  // constructor
};


 loveghb 发表于:2003-11-17 23:02:02
得分:0 

楼上的代码有区别吗?
我在DEV-CPP中测试过,没什么不妥的!
可能编译器对templete支持不好吧

 yuantao 发表于:2003-11-17 23:04:15
得分:0 

#include
using namespace std;
template  
class List
{
public:
 List();  // constructor
};
template  
List::List()
{
}


int main()
{
  List t;
 system("PAUSE");
  return 0;
}
好好的啊,没问题,估计是你的main格式不对? 

 hpho 发表于:2003-11-18 00:09:41
得分:10 

因为你把LIST的声明和实现分开了两个文件(list.h, list.cpp),模板的声明和实现现阶段必须放在同一文件里。 

 Wolf0403 发表于:2003-11-18 06:53:15
得分:4 

对了,楼上正解。现在的编译器普遍不支持模板分离编译 export,所以必须放在同一个文件中 

 MikeDogSong 发表于:2003-11-18 13:03:42
得分:0 

明白 

上一篇:各位大侠帮帮忙!!C/C++中要把一个十六进制字符串,转换成十进制数怎么办?
下一篇:如何在程序运行时定义一个数组:

分享到: