C++ 正确使用sizeof()函数

C++ 正确使用sizeof()函数,c++,char,sizeof,C++,Char,Sizeof,为什么这个语法不正确 char* p = new char[dg.sizeof(Payload())]; 我想创建一个新变量,它是一个字符串,大小为dg的有效负载部分。。。我不明白怎么做?多谢各位 error: expected unqualified-id before 'sizeof' error: expected `]' before 'sizeof' error: expected ',' or ';' before 'sizeof' 改变 到 sizeof不是一个函数,它

为什么这个语法不正确

 char* p = new char[dg.sizeof(Payload())];
我想创建一个新变量,它是一个字符串,大小为dg的有效负载部分。。。我不明白怎么做?多谢各位

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


sizeof不是一个函数,它是一个类似+或*的运算符,但它在编译时运行。它需要一个操作数,可以是parens中的typename,也可以是不需要parens中的表达式。因此,如果Payload是结构dg的成员,那么sizeof dg.Payload是函数指针成员的大小,而sizeof dg.Payload是有效负载的返回类型的大小。

sizeof是一个c/c++运算符。它不能用作类方法。

什么是dg?有效载荷呢?我假设这是C?除非dg有一个自己的sizeof函数,否则您正在错误地使用它。什么是函数Payload的返回类型?您想做什么?这是不正确的语法。sizeof返回一个数字,例如8。dg.8没有任何意义,糟糕的问题会导致非常糟糕的答案。但我怀疑sizeof是否是正确的工具。看起来像是一个试图返回数组的函数。请注意,这将返回有效负载返回类型的大小,这可能是OP想要的,也可能不是OP想要的。OP似乎对sizeof的用途有一个根本性的误解。我们还没有足够的上下文,但我已经确定这个答案是错误的@WouterHuysentruit:根据你提到的缺失上下文,答案不能是错的,也不能是对的…;--然而,我同意这可能无法解决OP的问题。。。
char* p = new char[dg.sizeof(Payload())];
char* p = new char[sizeof(dg.Payload())];