【问题标题】:Why does static member with an in-class initializer must have be integral type?为什么具有类内初始化程序的静态成员必须是整数类型?
【发布时间】:2014-04-03 09:09:29
【问题描述】:

只有当成员是非易失性 const 整数类型时,C++ 才能在类声明中初始化常量静态成员。

但是为什么是整型呢?其他类型(如浮点数)是否存在任何实现问题?也许精度?

struct testClass
{
    static const int val = 12; 
    //static const float val = 12; 
};

【问题讨论】:

    标签: c++


    【解决方案1】:

    小心。编译器在目标上模拟浮点实现并不总是容易(甚至可行),而且无论如何,目标上的浮点行为可能会通过更改舍入模式而动态更改。

    所以任何涉及编译时浮点值的事情都是棘手的。 C++03 没有做任何可能鼓励它的事情 ;-)

    C++11 允许您使用 constexpr 代替 const

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-19
      • 2023-03-18
      • 1970-01-01
      • 2013-09-25
      • 2012-04-04
      • 2020-01-31
      相关资源
      最近更新 更多