埋怨一下,现在的C++竟然不能这样使用sizeof(class::member)
最近由于工程的需要,要为一个已有的类定义一个辅助类,打算使用宏,例如
struct something
{
int someint;
};
#define HELPERFIELD(x,y) char y[sizeof(x::y)+4] // 4个字节的扩展内容
struct somethinghelper
{
HELPERFIELD(something,someint);
// 宏展开就是
// char someint[4+4];
};
ms的C++8.0编译器不能通过编译,google了一下,说现时为止,sizeof只能这样用sizeof(object.member)却不能sizeof(class::member)(非静态),这不太搞笑了吗!!!非要我这样写sizeof((something*)0)->someint_kind)),晕倒
听说新标准支持这样的写法,希望新标准赶快到来