作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在为 enum
中的元素分配最大值时遇到问题。第一:
protected:
enum {DEFAULT_PADDING=std::numeric_limits<enum>::max()};
结果:
./basecode.h:30:51: error: expected identifier or '{'
enum {DEFAULT_PADDING=std::numeric_limits<enum>::max()};
^
./basecode.h:30:59: error: expected a type
enum {DEFAULT_PADDING=std::numeric_limits<enum>::max()};
(and a couple of others)
其次,切换到:
protected:
enum {DEFAULT_PADDING=std::numeric_limits<unsigned int>::max()};
结果:
./basecode.h:30:27: error: expression is not an integral constant expression
enum {DEFAULT_PADDING=std::numeric_limits<unsigned int>::max()};
如何让 numeric_limits
给我一个可以在编译时用于 enum
的值?
该库较旧,因此它支持许多较旧的编译器和 IDE。我需要至少是 C++03,最好是 C++98 的东西。
标准注意事项适用:这是一个简单的基于 make 的项目。它不使用 Autotools,不使用 Cmake,不使用 Boost 等。
最佳答案
在 C++03 中, std::numeric_limits<T>::max()
只是static
.在 C++11 中,它变成了 static constexpr
.您需要后者才能在整数常量表达式中使用,因此只需使用 -std=c++11
进行编译即可。会做的。
如果你不能使用 C++11,你可以使用 UINT_MAX
.
关于c++ - 通过 numeric_limits 为枚举分配最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31282305/
我是一名优秀的程序员,十分优秀!