如何在类的头文件中定义const double?

zeb*_*bra 11 c++ const static-members compile-time-constant

在我的类的头文件中,我正在尝试以下并获得编译器投诉:

private:
    static const double some_double= 1.0;
Run Code Online (Sandbox Code Playgroud)

你怎么这么做呢?

Ker*_* SB 20

在C++ 11中,由于以下原因,您可以使用非整数常量表达式constexpr:

private:
    static constexpr double some_double = 1.0;
Run Code Online (Sandbox Code Playgroud)

  • 这不仅仅是令人困惑!什么`constexpr`做'const`不能做?如果允许`constexpr`,为什么`const`不会暗示`constexpr`?它认为C++打破了自己的历史设计. (3认同)
  • `const`并不意味着`constexpr`.`constexpr`暗示`const`.`constexpr`比`const`更严格.考虑`const auto seed = clock();`,`seed`是一个常量变量(它的值以后不能更改),但它不是一个常量表达式(它不能用于调整数组的大小,如果它是itegral).`constexpr`旨在表示编译时和运行时确定之间的区别,其中`const`更多是接口和/或访问权限说明符. (3认同)