免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8711 | 回复: 9
打印 上一主题 下一主题

如何判断 模板的输入类型? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-09 22:11 |只看该作者 |倒序浏览
如何判断模板的输入类型?
比如

  1. template<class tp>
  2. class base
  3. {

  4.    int test()
  5.        {
  6.             ///在这如何知道tp的具体类型?  
  7.        }
  8.    tp p;

  9. };
复制代码

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2010-02-09 23:01 |只看该作者
参考typeid
问题在于你知道了想怎么用?

论坛徽章:
0
3 [报告]
发表于 2010-02-09 23:28 |只看该作者
typeid 好象不行因为这是运行期的函数。
我这个应该是在编译期的。

比如


  1. template<class tp>
  2. class base
  3. {

  4.    int test()
  5.        {
  6.             /// 如果tp 是类 就
  7.             p.test();
  8.            // 如果 tp 是基本类型就
  9.            cout << p << endl;

  10.        }
  11.    tp p;

  12. };

  13. int main()
  14. {
  15.     base< base< char> > go;
  16.     go.test();
  17. }

复制代码

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2010-02-09 23:32 |只看该作者
  1. template<class tp>
  2. class base
  3. {

  4.    int test()
  5.        {
  6.             p.test();
  7.        }
  8.    tp p;

  9. };


  10. template<>
  11. class base<char>
  12. {

  13.    int test()
  14.        {
  15.            cout << p << endl;
  16.        }
  17.    tp p;

  18. };
复制代码

论坛徽章:
0
5 [报告]
发表于 2010-02-09 23:45 |只看该作者
关键是,你干嘛要判断这个?

论坛徽章:
0
6 [报告]
发表于 2010-02-10 08:47 |只看该作者
typeid 好象不行因为这是运行期的函数。
我这个应该是在编译期的。

比如
ljoo 发表于 2010-02-09 23:28



    这就不叫泛型编程了哦

论坛徽章:
0
7 [报告]
发表于 2010-02-10 11:21 |只看该作者
本帖最后由 ljoo 于 2010-02-10 11:22 编辑
群雄逐鹿中原 发表于 2010-02-09 23:32


呃,谢谢,基本是这个意思。
不过把每一个基本类型都特化一种类出来,这个感觉还是不太爽。

论坛徽章:
0
8 [报告]
发表于 2010-02-10 16:08 |只看该作者
应该用模版特化。
4楼已经解决了

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
9 [报告]
发表于 2010-02-10 17:27 |只看该作者
恩,你可以用用Boost里面的断言函数,然后进行判断。有点设计TMP了话说……

论坛徽章:
0
10 [报告]
发表于 2010-02-12 19:10 |只看该作者
C++语言无法在运行是判断类型,只有在编译时及以前,,

所以C++的OO特性实际上是一个畸形。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP