CSDN首页 新闻 论坛 小组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 第二书店 程序员
五一特色活动创意 征集,有重奖!!! "一句话,话优势 "可用分和程序员杂志等你来拿
CSDN社区
搜索 | 收藏 | 打印 | 关闭
CSDN社区 >  C/C++ >  C++ 语言

当文件中使用模板时的多文件编译问题

楼主pw4394(才鸟)2005-03-11 20:11:50 在 C/C++ / C++ 语言 提问

我使用了三个文件template.cpp,myhead.h,myhead.cpp;  
  内容如下:  
  //template.cpp  
  #include   <iostream>  
  #include   "myhead.h"  
  using   namespace   std;  
   
  int   main(int   argc,   char   *argv[])  
  { int   a,b;  
  a=1,b=2;  
  cout<<Max(a,b)<<endl;  
  }  
   
   
  //myhead.h  
  #ifndef   myhead_h  
  #define   myhead_h  
   
  template<typename   T>  
  T   Max(T   ,T   )   ;  
   
  #endif  
   
  //myhead.cpp  
  #include   "myhead.h"  
  template   <typename   T>  
  T     Max(T   a,T   b)  
  {return   (a>b?a:b);}  
   
  用borland   c++5.5   命令行编译时(bcc32   template   myhead)出错如下:  
  Microsoft   Windows   XP   [版本   5.1.2600]  
  (C)   版权所有   1985-2001   Microsoft   Corp.  
   
  E:\BCC55\source>bcc32   template   myhead  
  Borland   C++   5.5.1   for   Win32   Copyright   (c)   1993,   2000   Borland  
  template.cpp:  
  Warning   W8057   template.cpp   11:   Parameter   'argc'   is   never   used   in   function   main(i  
  nt,char   *   *)  
  Warning   W8057   template.cpp   11:   Parameter   'argv'   is   never   used   in   function   main(i  
  nt,char   *   *)  
  myhead.cpp:  
  Turbo   Incremental   Link   5.00   Copyright   (c)   1997,   2000   Borland  
  Error:   Unresolved   external   'int   Max<int>(int,   int)'   referenced   from   E:\BCC55\SOU  
  RCE\TEMPLATE.OBJ  
   
   
  当把T换成int时编译可以通过,请问这是为什么,谢谢  
   
   
  问题点数:5、回复次数:2Top

1 楼UPCC(杂食动物)回复于 2005-03-11 20:25:40 得分 2

呵呵,摸板是不能分开编译的,要把声明和定义放在同一个文件里   !Top

2 楼q386254779()回复于 2005-03-11 22:20:23 得分 3

模板编译模式分为   “分离模式”和   “包含模式”  
   
  你上面的为“分离模式”的近似,只需在头文件中,在模板声明前加上export关键字,  
  不过目前常用的工具(VC,BCB)都不支持,BCB支持此关键字,不过没有实现其功能  
  VC   连export都不识别,据说EDG   C++支持挺好,不过我是没有。。  
   
  UPCC   说的是包含模式  
   
  Top

相关问题

  • 使用模板文件的问题
  • 不能使用MIDL.EXE编译IDL文件?
  • 请教:在VC中使用类模板,需要如何设置编译器才能编译通过?
  • [提问C++ Primer - Chapter 2] Unresolved external ? 使用类模板时的编译错误
  • 模板编译问题
  • 模板类编译出错
  • 【求助:编译错误,使用错误的预编译头文件指令?】
  • 唠叨请看,关于smarttemplate编译文件后,在后台选择不民模板界面的问题
  • 如何使用arm-uclibc-gcc将.c文件编译生成.a,将.c文件编译生成.cgi?
  • UNIX中无法使用cc命令编译C文件

关键词

  • c++
  • 文件
  • 模板
  • cpp
  • 模式
  • template
  • myhead
  • bcc
  • 支持
  • max

得分解答快速导航

  • 帖主:pw4394
  • UPCC
  • q386254779

相关链接

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

广告也精彩

反馈

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