正确使用sizeof()函数

时间:2015-08-27 17:15:34

标签: c++ char sizeof

为什么这种语法不正确?

 char* p = new char[dg.sizeof(Payload())];

我想创建一个新变量,这个字符串是dg的Payload部分的大小......我不明白该怎么做?谢谢

 error: expected unqualified-id before 'sizeof'
 error: expected `]' before 'sizeof'
 error: expected ',' or ';' before 'sizeof'

3 个答案:

答案 0 :(得分:4)

sizeof不是函数,它是+*之类的运算符,但它在编译时运行。它需要一个操作数,或者是parens中的typename,或者是一个表达式(不需要在parens中)。因此,如果Payload是结构dg的成员,sizeof dg.Payload是函数指针成员的大小,sizeof dg.Payload()Payload()的返回大小类型。

答案 1 :(得分:2)

sizeof是一个c / c ++运算符。它不能用作类方法。 http://en.cppreference.com/w/cpp/language/sizeof

答案 2 :(得分:1)

更改

char* p = new char[dg.sizeof(Payload())];

char* p = new char[sizeof(dg.Payload())];