代码之家  ›  专栏  ›  技术社区  ›  RuLoViC

在constexpr中生成错误

  •  0
  • RuLoViC  · 技术社区  · 6 年前

    我在我的应用程序中使用constexpr,得到编译错误。

    namespace {
       const int kLength = 1;
       const float kPiNumber = 3.14159265;
       constexpr float kCircumferenceArc()
       { return (2*kPiNumber*kLength) / 360; }
    }
    

    我得到的错误是:

    常量表达式中不允许读取非constexpr变量kPiNumber {返回(2*kPiNumber)/360;}

    有人能帮我一下吗?

    提前谢谢

    1 回复  |  直到 6 年前
        1
  •  2
  •   Michael Veksler    6 年前

    constexpr变量必须从编译时已知的值初始化常量变量,如:

    const float kPiNumber = 3.14159265;

    由于某些历史原因,编译时不知道'const float'。 要使其工作,必须将此行更改为:

    constexpr float kPiNumber = 3.14159265;

    下面是完整的代码:

    namespace {
       const int kLength = 1;
       constexpr float kPiNumber = 3.14159265f;
       constexpr float kCircumferenceArc()
       { return (2*kPiNumber*kLength) / 360; }
    }