首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

sizeof()不能用与类的成员吗?该如何处理

2013-10-30 
sizeof()不能用与类的成员吗?我用VC2012编译以下代码:class C{int m_ichar m_str[4]}void p(){coutsi

sizeof()不能用与类的成员吗?
我用VC2012编译以下代码:


class C{
    int m_i;
    char m_str[4];
};
void p()
{
    cout<<sizeof(C::m_i)<<endl;
    cout<<sizeof(C::m_str)<<endl;
}

p函数里面的调用提示编译错误: error C2070: 'unknown': illegal sizeof operand
这是为什么呢? C++标准有没有说sizeof()能用于什么场景不能用于什么场景?
[解决办法]
改成static int m_i;就可以 了。
还要我进一步解释吗?
[解决办法]
http://en.cppreference.com/w/cpp/language/sizeof
[解决办法]
不行。
不过新版的 c++ 好像正在考虑增加这样的功能。
[解决办法]
C::m_i  m_i属于对象 不属于C
[解决办法]
实例化对象后试试!
[解决办法]
这是成员变量,得通过实例访问呀
[解决办法]
可以这样来计算:
class C{
public:
int m_i;
char m_str[4];
};

int _tmain(int argc, _TCHAR* argv[])
{
        sizeof( ((C *) 0)->m_i);
return 0;
}

[解决办法]
c++11是可以这样的,如果你用的不是c++11,有个暂时的解决办法:
#define SIZE_OF_MEMBER(cls, member) sizeof( ((cls*)0)->member )

cout << SIZE_OF_MEMBER(C, m_i) << endl; //不过需要成员是public属性的

热点排行