【问题标题】:Using the sizeof() function correctly [closed]正确使用 sizeof() 函数[关闭]
【发布时间】:2015-08-27 17:15:33
【问题描述】:

为什么这个语法不正确?

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

我想创建一个新变量,它是一个与 dg 的有效负载部分大小相同的字符串...我不明白该怎么做?谢谢

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

【问题讨论】:

  • 什么是dg?还有Payload?我想这是 C?
  • 除非dg有自己的sizeof函数,否则你用错了
  • 函数Payload的返回类型是什么
  • 你想做什么?那是不正确的语法。 sizeof() 返回一个数字,比如 8。dg.8 无论如何都没有意义
  • 糟糕的问题会导致非常糟糕的答案。

标签: c++ char sizeof


【解决方案1】:

sizeof 不是函数,它是类似+* 的运算符,但它在编译时运行。它需要一个操作数,可以是括号中的类型名,也可以是表达式(不必在括号中)。所以如果Payload是结构dg的成员,sizeof dg.Payload是函数指针成员的大小,sizeof dg.Payload()Payload()的返回类型的大小。

【解决方案2】:

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

【讨论】:

    【解决方案3】:

    改变

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

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

    【讨论】:

    • 我怀疑sizeof 是否是正确的工具。看起来像一个函数试图返回一个数组。
    • 请注意,这将返回 sizeof() 有效载荷的返回类型,这可能是也可能不是 OP 想要的。 OP 似乎对 sizeof 的用途存在根本性的误解。
    • 我们还没有足够的上下文,但我已经确定这个答案是错误的 ;)
    • @WouterHuysentruit:跟进您提到的“缺失的上下文”,答案不可能是错误的,也不正确...... ;-) - 但是我同意它可能无法解决 OP 的问题......
    猜你喜欢
    • 1970-01-01
    • 2020-02-18
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多