通过函数 c++17 计算运行时常量

问题描述 投票:0回答:1

我有一个简单的常量,我喜欢在运行时评估它的值(或者如果你建议更好的方法)。

inline float deg_to_rad(float p_y) {
    return p_y * static_cast<float>(Math_PI) / 180.f;
}

class TEST {  
    public: 
        const float _MOVEMENT_ = deg_to_rad(90);

}   

有更好的方法吗?

c++ c++17 constants
1个回答
0
投票
  1. 使用函数不需要将计算移至运行时。只需将

    constexpr
    添加到函数中,它就会在编译时运行。

  2. 即使没有
  3. const float _MOVEMENT_ = deg_to_rad(90);

    constexpr
    也可以使用您现在拥有的功能。

    但建议:

    • 使其

      static
      在类的所有实例之间共享它。

    • Make it

      constexpr
      (让事情变得更容易)

    • 重命名,使其不使用保留标识符(任何以

      _[A-Z]
      开头或包含
      __
      的标识符都被保留)。

    • 不要用大写字母命名它,因为它不是一个宏(C/C++ 按照惯例使用大写字母表示宏,其他语言倾向于将它用于常量,因为 C 宏经常被用作常量,但在我看来,画一个完整的圆圈是很奇怪的将其用于 C/C++ 中的所有常量)。

      类名相同。

    总的来说,您最终会得到

    static constexpr movement = deg_to_rad(90);

© www.soinside.com 2019 - 2024. All rights reserved.