问题描述
- 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