您的位置:首页 > 其它

获取成员变量类型

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

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 代替。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: