gpt4 book ai didi

c++ - 如何在 C++ 中将 const int 设置为最大值?

转载 作者:可可西里 更新时间:2023-11-01 18:39:00 25 4
gpt4 key购买 nike

我有一个静态常量成员,想将它设置为最大整数。我正在尝试以下操作:

const static int MY_VALUE = std::numeric_limits<int>::max();

但是得到如下错误:

error: in-class initializer for static data member is not a constant expression

有什么解决办法吗?函数如何返回常量表达式?

编辑: 添加 -std=c++11 解决了这个问题。我的室友告诉我,编译器(C++11 之前的版本)不够聪明,无法决定 std::numeric_limits::max() 不会改变任何其他内容,因此不被视为常量。这可能是导致此错误的原因吗?

最佳答案

常量必须从常量表达式(可在编译时求值的表达式)初始化。

在 C++03 中,可以从中构建常量表达式的常量操作集非常紧凑。只有裸积分和数学运算。

为了在常量表达式中使用用户定义的函数,您需要:

  • C++11 或更高版本
  • 表示要标记的函数constexpr

这就是添加 -std=c++11 的原因Clang 的标志有帮助:它允许 constexpr并“切换”到使用 constexpr 的改进标准库实现对于 std::numeric_limits<T>::max() .

注意:如果您使用较新版本的 Clang,C++11 将是默认版本,并且不需要标志来允许 constexpr .

关于c++ - 如何在 C++ 中将 const int 设置为最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35521284/

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