相关疑难解决方法(0)

为什么不允许使用静态const浮点数?

我有一个类,它基本上只包含我的应用程序使用的一堆常量定义.但出于某种原因,longs编译但float不是:

class MY_CONSTS
{
public :
    static const long   LONG_CONST = 1;      // Compiles 
    static const float FLOAT_CONST = 0.001f; // C2864
};
Run Code Online (Sandbox Code Playgroud)

给出以下错误:

1>c:\projects\myproject\Constant_definitions.h(71) : error C2864: 'MY_CONSTS::FLOAT_CONST' : only static const integral data members can be initialized within a class
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

c++ visual-c++

64
推荐指数
5
解决办法
4万
查看次数

C++为什么我可以在类定义中初始化静态const char而不是静态const double?

这是两行代码:

static const double RYDBERG_CONST_EV = 13.6056953;
static const char CHAR_H_EDGE = '-';
Run Code Online (Sandbox Code Playgroud)

第二行编译没有错误,第一行不编译.(错误:'constexpr' needed for in-class initialization of static data member...)

解决方案显然是constexpr在类型之前添加关键字.这是必需的,因为double它不是"整体类型".但为什么整数和浮点类型之间的行为不同?

c++ static-members constexpr c++11

13
推荐指数
1
解决办法
1821
查看次数

标签 统计

c++ ×2

c++11 ×1

constexpr ×1

static-members ×1

visual-c++ ×1