sizeof()不能用与类的成员吗?该如何处理
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属性的