CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  工具平台和程序库

有没有方法判断模板函数里参数的类型?

楼主HeavenS(King Of Terran)2002-11-22 16:09:09 在 C/C++ / 工具平台和程序库 提问

template   <class   T>    
  void   f(     T   message   )  
  {  
            ...  
            //在这里能不能判断出传入的参数是什么类型?  
  }  
   
  谢谢!  
   
     
  问题点数:20、回复次数:6Top

1 楼rtdb(东临碣石)回复于 2002-11-22 16:26:04 得分 1

一般来说用模板就是为了不进行类型判别.  
   
  运行时类型判断用RTTI.  
  Top

2 楼middle(中间件)回复于 2002-11-22 16:29:15 得分 1

可以用overload来判断。Top

3 楼Dynamic(1.0)回复于 2002-11-22 17:19:09 得分 1

template   <class   T,class   T1>    
            ...  
   
  template   <class   T,int>  
            ...  
   
  重载!Top

4 楼TopCat(令狐虫)回复于 2002-11-22 17:23:23 得分 2

楼上的方法对,不过这不叫“重载”,应该叫“模板特化”和“模板偏特化”  
  :)Top

5 楼HeavenS(King Of Terran)回复于 2002-11-23 14:52:48 得分 0

能不能判断基础类型如int,   char,   char*,   double?Top

6 楼ThinkX(秋天的树)回复于 2002-12-06 00:31:19 得分 15

用type_traits也许可以,  
  我想可以这样用,写个简单的判断是否是bool型的。  
   
  template   <typename   T>  
  struct   is_bool  
  {  
      enum   {value   =   false;};  
  };  
   
  //这个是全特化的版本,好像VC7只支持全特化,不支持偏特化,  
  //bcb6是支持偏特化的,但是不算太完全,GCC对偏特化的支持应该更好。  
  template   <>  
  struct   is_bool<bool>  
  {  
      emum   {value   =   true;};  
  };  
   
  if   (is_bool<T>::value)  
    do..  
  在boost中有很多的type_traits可以用,可以判断T是不是指针类型等等。  
   
  如果你要对各个类型采取不同的操作,可以用下面的办法:  
   
  template   <typename   T>  
  struct   Works  
  {  
      void   Do()   {   //默认情况   }  
  };  
   
  template   <>  
  struct   Works<int>  
  {  
      void   Do()   {   //int类型情况   }  
  };  
   
  template   <>  
  struct   Works<char>  
  {  
      void   Do()   {   //char类型情况   }  
  };  
   
  ...  
   
  template   <class   T>    
  void   f(     T   message   )  
  {  
          Works<T>   t;  
          t.Do();       //会根据情况调用各自的代码  
  }Top

相关问题

  • 模板函数的参数问题
  • 求助:含有函数指针参数的函数模板
  • 函数模板问题(带一个函数指针参数)
  • 模板函数的模板参数能否用缺省值~~???
  • C++模板判断函数是否被定义
  • template并不实例化模板函数中的参数?
  • 模板类不可以作为函数参数吗?
  • 用模板类作函数参数发生的问题
  • 模板函数
  • 函数模板

关键词

  • 模板
  • template
  • 特化
  • 类型
  • 判断
  • 支持
  • 情况
  • works
  • bool
  • struct

得分解答快速导航

  • 帖主:HeavenS
  • rtdb
  • middle
  • Dynamic
  • TopCat
  • ThinkX

相关链接

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

广告也精彩

反馈

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