CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

急, 来者有分,在线!!!

楼主zhenming_liu()2003-05-02 02:39:13 在 C/C++ / C语言 提问

我有三个文件:  
   
  //node.h  
   
  #include   <iostream>  
   
  using   namespace   std;  
   
  #ifndef   NODE_H  
  #define   NODE_H  
   
  template   <class   Type>  
  class   Node  
  {  
  public:  
  Node();  
  ~Node();  
  };  
   
  #endif  
   
  //node.cpp  
  #include   "node.h"  
  #include   <iostream>  
   
  using   namespace   std;  
   
  template   <class   Type>  
  Node<Type>::Node()  
  {  
  cout   <<     "Constructor   called"   <<   endl;  
  }  
   
  template   <class   Type>  
  Node<Type>::~Node()  
  {  
  cout   <<   "Destructor   called"   <<   endl;  
  }  
   
  //main.cpp  
  #include   <iostream>  
  #include   "node.h"  
   
  using   namespace   std;  
   
   
  int   main()  
  {  
  Node<int>   node_1;  
  return   0;  
  }  
   
  G++中我  
  g++   -g   -c   node.cpp  
  g++   -g   -c   main.cpp  
  g++   -g   -o   sim.out   node.o   main.o  
   
  error   message:Undefined                                               first   referenced  
    symbol                                                           in   file  
  List_T<int>::~List_T(void)                     main.o  
  List_T<int>::List_T(void)                       main.o  
  ld:   fatal:   Symbol   referencing   errors.   No   output   written   to   sim.out  
   
  在VC中也有类似的问题..  
   
  应该怎么办....  
   
  问题点数:0、回复次数:18Top

1 楼zhenming_liu()回复于 2003-05-02 02:51:03 得分 0

sorry  
   
  List_T<int>::~List_T(void)                     main.o  
  List_T<int>::List_T(void)                       main.o  
   
  should   be  
   
  Node<int>::~Node(void)                     main.o  
  Node<int>::Node(void)                       main.o  
  Top

2 楼chinajiji(菜鸟叽叽)回复于 2003-05-02 03:02:18 得分 0

对于大多数编译器来说,template   class的定义与声明应放在同一个*.h中,否则就会出现你说的那种错误,如果你实在想将template的声明与定义放在不同的文件里,请参见:  
  http://expert.csdn.net/Expert/topic/1464/1464686.xml?temp=.9609949Top

3 楼ghtsao(月之暗面)回复于 2003-05-02 03:09:24 得分 0

??,似乎没有问题。Top

4 楼ghtsao(月之暗面)回复于 2003-05-02 03:12:04 得分 0

哦,果然C++高手,见识了。Top

5 楼zhenming_liu()回复于 2003-05-02 03:28:09 得分 0

但是怎么将member   function   instantial?Top

6 楼ToUpdate(老六)回复于 2003-05-02 03:59:32 得分 0

UPTop

7 楼zhenming_liu()回复于 2003-05-02 04:37:58 得分 0

最后一个问题,   是不是只要实例化一个MEMBER   FUC,   其他就不用了,   好象G++中是这样的...Top

8 楼chinajiji(菜鸟叽叽)回复于 2003-05-02 12:59:00 得分 0

如果template   的声明与定义分别放在不同的文件里时,"只要实例化一个MEMBER   FUC,   其他就不用了,"是不行的.Top

9 楼solotony(solotony)回复于 2003-05-02 14:24:50 得分 0

如果你的编译器支持export的话,到是可以试一试分离,不然。。。  
   
  如果编译器支持函数级连接,到是可以试一试只实例化用到的成员函数,不实例化其它,不然。。  
   
  Top

10 楼zhenming_liu()回复于 2003-05-03 03:46:24 得分 0

但是我在g++下只实例化了一个MEMBER   FUNC然后就能成功编译了....  
   
  为什么....  
   
  先结掉另一个相同的贴吧...有点信誉:)Top

11 楼bigtea(企鹅)回复于 2003-05-03 04:02:13 得分 0

我来up啦,记住给分阿。Top

12 楼zhenming_liu()回复于 2003-05-03 04:28:14 得分 0

或许,   能看看我的整个文件吧:  
   
  http://ihome.ust.hk/~cs_lzm/comp151/Top

13 楼tchatcha(沧桑,孤独,浪漫,但执着!)回复于 2003-05-03 08:15:26 得分 0

不知道帮你顶一下涨涨人气  
  Top

14 楼justaseeker(MS)回复于 2003-05-03 08:23:32 得分 0

简单说,template   class的定义与声明应放在同一个*.h中Top

15 楼zhenming_liu()回复于 2003-05-04 19:42:51 得分 0

up..Top

16 楼snipersu()回复于 2003-05-04 20:49:16 得分 0

来晚了.  
  up一下.Top

17 楼huson(星芯)回复于 2003-05-04 21:27:23 得分 0

不错,太多高手了!  
  顶一下!Top

18 楼xiaoyuer0851(红旗下的蛋)回复于 2003-05-04 21:33:33 得分 0

呵呵,学习!~~~  
   
  这个方面刚好也不怎么懂!~~~Top

相关问题

  • 着急!!!!!来者有分!!!在线等待
  • 线程问题。急!来者有分!
  • 在线等待帮助,见者有分。急急急!!!!
  • 急::::100分,,,,,在线,
  • 在线给分,急!!!!!!!!
  • 100分Report service的问题,顶者有分.急在线等待
  • 高分求sql语句,急,在线等待!来者有分!
  • 急急急急急急急急急...在线等...解决放分
  • >>>>>>>>>>>>>>>>>>>紧急:拨号线路上实现TCP/IP,进者有分!
  • 软件发布的谜题,提供线索者有分。急

关键词

  • 编译器
  • 文件
  • template
  • node
  • 实例化
  • 定义
  • 放在
  • member
  • main
  • 声明

得分解答快速导航

  • 帖主:zhenming_liu

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo