当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 关于C++中template的问题
帖子发表于 : 2007-08-08 2:31 
头像

注册: 2007-04-24 13:44
帖子: 216
送出感谢: 0 次
接收感谢: 0 次
代码:
/*不用temlate的时候我把声明放在Test.h的文件里再把定义放在Test.cpp的文件里没有错误出现
 * 而现在我想用temlate来实现摸板,同样把函数display的声明放在Test.h下,而把具体实现放
 * 在了Test.spp下却出现了“undefined reference to `Test<int>::display()'”的问题
 * 这是怎么一回事啊。是我那里出现了问题吗?
 * 具体代码如下:
 */
//************************************************************************
//***************"Test.h"**************************************************
#ifndef TEST_H_
#define TEST_H_
#include <iostream>
template <typename T>
class Test
{
public:
   Test(){};
   Test(T _data,Test* _next = 0):data(_data),next(_next){}
   virtual ~Test(){};
   void display();
private:
   T data;
   Test *next;
};

#endif /*TEST_H_*/
//*****************************************************************************
//Test.cpp
#include "Test.h"

template<typename T>
void Test<T>::display()
{
   std::cout<<this->data<<"  ";
   Test *tmp = this->next;
   while(tmp != 0)
   {
      std::cout<<tmp->data<<"  ";
      tmp = tmp->next;
   }
}
//*****************************************************************************
//main.cpp
#include "Test.h"

int main()
{
   Test<int> hello(2,new Test<int>(3,new Test<int>(4)));
   hello.display();                      //这里报错:undefined reference to `Test<int>::display()'
   return 0;
   
}

这只是个测试的类 谁能具体帮我解释下吗?
谢谢!!!!!!!!


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-08-08 13:50 
头像

注册: 2006-02-27 20:19
帖子: 599
地址: works system
送出感谢: 0 次
接收感谢: 0 次
不要把模板类的声明和实现放在两个文件里,模板编译中不产生实际代码,只有加模板参数使用时才产生代码,因此如果分两个文件,连接时会出错。


_________________
东西路,南北走
十字路口人咬狗
拿起狗来打砖头
砖头咬了狗一口
图片


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-08-08 15:57 
头像

注册: 2007-04-24 13:44
帖子: 216
送出感谢: 0 次
接收感谢: 0 次

谢谢拉


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译