前阵子点点问我一个问题:
对于浦东的变量,我们可以使用sizeof(obj)来求其大小
但是对于一个类的数据成员,却不能用sizeof(类名::数据成员)的方式来求其大小
有没有什么办法可以实现类似的需求呢?
下面是我提供的一种解决方案
但是该解决方案有一个缺点,就是只能对public的数据成员求值
对于private或者protected的数据成员,则只能在类或者友元内使用该宏
以下是所给的代码
#include <iostream>
template <class ClassT,typename MemberT>
MemberT SizeOf_(MemberT ClassT::*);
#define SizeOf(Member) sizeof (SizeOf_(&Member))
class Class
{
public :
int i;
};
int _tmain(int argc, _TCHAR* argv[])
{
std::cout<<SizeOf(Class::i)<<std::endl;
return 0;
}