兔子的技术博客

兔子

   :: 首页 :: 联系 :: 聚合  :: 管理
  202 Posts :: 0 Stories :: 43 Comments :: 0 Trackbacks

留言簿(10)

最新评论

阅读排行榜

评论排行榜

这应该是模板元编程里的概念吧,有时候我们确实需要获取成员变量的类型,这里提供一个方法借助模板的偏特化达到目的:

  1. templatetypename P>  
  2. struct MemberType;  
  3. templatetypename F, typename T >  
  4. struct MemberType< F T::* >  
  5. {  
  6.     typedef F member_type;   
  7.     typedef T class_type;  
  8. };  
 

 

假设我们有个结构定义如下:

 

  1. struct Call  
  2. {         
  3.     int         ID;  
  4.     std::string     Key;  
  5. };  
 

 

通过 MemberType< decltype( &Call::ID ) >::member_type 就可以获得是变量 ID 的类型(int)了。

注:如果你的编译器不支持 decltype, 可以使用 boost 库里的 BOOST_TYPEOF 代替。


转自:http://blog.csdn.net/jadedrip/article/details/5583300
posted on 2011-08-04 13:55 会飞的兔子 阅读(693) 评论(0)  编辑 收藏 引用 所属分类: C++及开发环境

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理