获取成员变量类型

获取成员变量类型

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

view plain
  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. };  
 

 

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

 

view plain
  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

你可能感兴趣的:(获取成员变量类型)