【问题标题】:Building error in constexprconstexpr 中的构建错误
【发布时间】:2018-07-21 09:02:45
【问题描述】:

我在我的应用程序中使用 constexpr,但出现编译错误。

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

我得到的错误是:

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

有人可以帮我解决这个问题吗?

提前致谢

【问题讨论】:

  • const 带有constexpr 初始化器的整数变量会自动生成constexpr,但浮点变量不会。解决方案是使kPiNumber constexpr.

标签: c++ c++11 constexpr


【解决方案1】:

constexpr 变量必须从编译时已知的值初始化。一个 const 变量,例如:

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; }
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-20
  • 1970-01-01
相关资源
最近更新 更多