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

关于类模板的定义时的代码布置问题(有点怀疑编译器了)

楼主crab_hn(螃蟹)2003-12-02 22:47:01 在 C/C++ / C++ 语言 提问

//x.h中定义类  
  template<class   T>  
  class   A{  
  public:  
  int   Length()   const;  
  };  
   
  //x.cpp类实现文件  
  #include   "x.h"  
   
  template<class   T>  
  int   A<T>::Length()   const  
  {  
  return   10;  
  }  
   
  //使用类  
  #include   "x.h"  
  #include   <iostream.h>  
   
  main()  
  {  
  A<int>   a;  
  cout   <<   a.Length();  
  }  
   
  连接错误:  
  error   LNK2001:   unresolved   external   symbol   "public:   int   __thiscall   A<int>::Length(void)const   "   (?Length@?$A@H@@QBEHXZ)  
   
  可是如果x.cpp和x.h合并到x.h就没有问题  
   
  奇怪啊~~~~~~~~~~ 问题点数:100、回复次数:5Top

1 楼zhouqingyuan(浪帆)回复于 2003-12-02 22:58:38 得分 50

没有什么奇怪的,这个问题已经问了好多次了,VC6.0对于模板的支持是不好,必须把定义和实现防在一个文件中才可以。  
  不过vc7.0已经可以放在两个文件了。Top

2 楼nbb()回复于 2003-12-02 23:16:08 得分 0

对Top

3 楼Polarislee(北极星)(无房无车,飘在北京)回复于 2003-12-02 23:23:42 得分 0

不过vc7.0已经可以放在两个文件了。  
   
  可以了吗,vc7已经支持export关键字了?真的假的Top

4 楼cniou(混混)回复于 2003-12-02 23:46:06 得分 50

其实template在编译时扩展时同宏几乎一样  
  C++标准并没有规定其具体实现应该放在哪儿  
  就连C++   Programming   Language也说如果在不同的CPP文件中实现编译器不会报错  
  所以你在使用template的时候必须保证该CPP文件能找到template的定义。  
  template的定义一般是在头文件里定义的,这样可以保证不同CPP文件可以引用同  
  一个定义Top

5 楼crab_hn(螃蟹)回复于 2003-12-03 07:37:02 得分 0

7.0真的可以吗  
  怎么我的不可以  
  而且dev-c++也不可以  
  原来是这个问题啊  
  谢谢各位Top

相关问题

  • 送分!编译器的源代码!
  • 求JAVA编译器的源代码!
  • 编译器有bug?看看这段代码
  • 关于编译器源代码的问题!
  • 数学函数编译器,源代码免费提供!!!超快!
  • 想要一个编译器的源代码,急切!!!
  • 一个关于编译器生成代码的问题!
  • 那里有C++编译器的源代码下载
  • vc6中编译器有代码优化功能吗?
  • 大家的编译器对这段代码发出警告吗?

关键词

  • c++
  • 文件
  • template
  • cpp
  • vc
  • 定义
  • 问题
  • 实现
  • 放在
  • length

得分解答快速导航

  • 帖主:crab_hn
  • zhouqingyuan
  • cniou

相关链接

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

广告也精彩

反馈

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