sizeof() 如何得到C++类/结构中成员所占空间大小???

!!!!请勿答非所问 !!!!!

简要如下:

struct XXX
{
....
...
char strname[****];
...

void funxx()
{
int iix = sizeof(strname);//这里没问题,问题在下面
}
};

int main()
{

XXX var;
int iix2 = sizeof(var.strname);//这也可以,

//问题在这里,如何不创建类的实例,也不在类的函数中得到成员空间大小 !!!

int iix = sizeof(XXX::strname);//VC6编译错误,为何????,如何解决???

1.sizeof不是函数,在编译的时候,编译器就求出了对应数据结构的大小。
2.至于是否支持sizeof(XXX::strname),完全取决于编译器,在早期的c++中是不支持的,现在已经支持了。

运算符sizeof,参数是基本类型,类或结构的名称,sizeof(int),sizeof(classname), sizeof(structname);
使用变量作为sizeof也是可以的,因为编译器实际上已经知道变量的类型。
使用数组作为sizeof也是可以的.

可以在类中把strname定义为静态地static 这样就可以用类名访问。即可求出sizeof(var.strname)大小。

收贴。

楼上所言极是

用icl测试了下,通过。

是编译器的问题。

#if 1
#include
using namespace std;

int main()
{
int a = 0;
sizeof(int);
//sizeof int; 报错
sizeof a;
sizeof(1);
sizeof 2;
return 0;
}
#endif

int len = sizeof(((XXX*)nullptr)->strname);