5

为什么这不起作用?

enum : long {MaxValue = std::numeric_limits<long int>::max()};

我收到错误:错误 1 ​​错误 C2057:预期的常量表达式
它有什么不恒定的?long int 的限制在编译时是已知的,那么问题是什么?

4

3 回答 3

5

问题是虽然std::numeric_limits<long int>::max()函数返回常量值,但它是在运行时调用的,并且您需要在编译时使用常量值

也许您可以只使用LONG_MAXvalue 代替(请参阅climits标题)?

于 2010-11-24T12:24:38.030 回答
3

正如其他人所说,您需要一个常量表达式(函数不合格)。最终 C++1x 将支持更广泛的常量表达式,包括函数。请参阅n2235和 Bjarne Stroustrup 的常见问题解答条目

于 2010-11-24T12:28:50.307 回答
1

是的,但函数不能在编译时执行。max()

于 2010-11-24T12:24:58.743 回答