【发布时间】:2016-06-01 23:15:56
【问题描述】:
我有一个静态 const 成员,想将其设置为最大整数。我正在尝试以下方法:
const static int MY_VALUE = std::numeric_limits<int>::max();
但是得到以下错误:
错误:静态数据成员的类内初始化器不是常量 表达
有什么解决办法吗?函数not如何返回常量表达式?
编辑: 添加 -std=c++11 解决了这个问题。我的室友告诉我,编译器(C++ 11 之前)不够聪明,无法确定 std::numeric_limits::max() 不会改变其他任何内容,因此不被视为常量。这可能是这个错误的原因吗?
【问题讨论】:
-
什么编译器(或者更重要的是什么 C++ 头文件),什么选项?使用 std=c++11 为我工作。
-
我目前正在使用 clang-700.1.81
-
用
-std=c+11编译? -
顺便说一下,
MY_VALUE对于不是宏的东西来说是个坏名字。将 ALL_CAPS 用于常量的概念在 C(常量使用宏)和 Java(没有宏)中是有意义的,但在 C++ 中只会带来麻烦。 -
@ChristianHackl MY_VALUE 只是这个问题的占位符
标签: c++ integer max constants numeric-limits