gpt4 book ai didi

c++ - 通过 numeric_limits 为枚举分配最大值?

转载 作者:行者123 更新时间:2023-11-28 00:14:25 25 4
gpt4 key购买 nike

我在为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com