获取成员变量类型
2010-05-12 16:47
183 查看
这应该是模板元编程里的概念吧,有时候我们确实需要获取成员变量的类型,这里提供一个方法借助模板的偏特化达到目的:
假设我们有个结构定义如下:
通过 MemberType< decltype( &Call::ID ) >::member_type 就可以获得是变量 ID 的类型(int)了。
注:如果你的编译器不支持 decltype, 可以使用 boost 库里的 BOOST_TYPEOF 代替。
template< typename P> struct MemberType; template< typename F, typename T > struct MemberType< F T::* > { typedef F member_type; typedef T class_type; };
假设我们有个结构定义如下:
struct Call { int ID; std::string Key; };
通过 MemberType< decltype( &Call::ID ) >::member_type 就可以获得是变量 ID 的类型(int)了。
注:如果你的编译器不支持 decltype, 可以使用 boost 库里的 BOOST_TYPEOF 代替。
相关文章推荐
- Runtime获取一个类中所有成员变量的名字和类型
- 特殊数据类型成员变量的初始化
- runtime 获取类的属性,方法,成员变量,以及协议 字典转model 总结
- C++中各种类型的成员变量的初始化方法(mark-好)
- 算法库的设计之成员变量的类型
- PowerShell中使用GetType获取变量数据类型
- Transact-SQL 示例 - 如何获取一个变量的数据类型
- c/c++笔试题——const类型的成员函数内部如何改变成员变量
- 接口里定义的成员变量必须是public static final类型
- C++ static、const和static const类型成员变量声明以及初始化
- 与struct相关的宏定义 --- 根据成员变量偏移,获取struct起始地址
- 局部变量、成员变量、引用类型变量、值类型变量分析
- 运行时 动态获取成员变量
- Runtime 获取成员变量列表
- 使用runtime获取成员变量
- 用jquery获取input输入框中的id和值、全局变量 局部变量和成员变量区别、
- 值类型局部变量必须先初始化才能使用,值类型成员变量可以不初始化。
- const类型的成员函数内部如何改变成员变量
- Java反射打印类的信息,包括类的成员函数、成员变量(只获取成员函数)
- 获取成员变量的地址和偏移地址