gpt4 book ai didi

c++ - 将静态常量类实例用于开关/案例

转载 作者:行者123 更新时间:2023-11-28 02:38:43 28 4
gpt4 key购买 nike

我有一个有点像枚举的类,它的每个实例都有一个唯一的 int 值,该值从 0 开始并在每个新实例时递增。

class MyEnumLikeClass
{
static int NextId = 0;

static const MyEnumLikeClass FIRST;
static const MyEnumLikeClass SECOND;

const int val_;

public :
MyEnumLikeClass() : val_(NextId++)
{
}

operator int() const
{
return val_;
}

//other methods (usually getters) omitted for clarity
}

我正在尝试在 switch case 中使用它,这样我就可以做类似的事情

MyEnumLikeClass value;
switch(value)
{
case MyEnumLikeClass::FIRST :
break;
case MyEnumLikeClass::SECOND :
break;
default :
}

我收到“case value is not a constant expression”错误,这似乎是因为编译器在编译时不知道这些值。

有什么方法可以让它发挥作用吗?

最佳答案

在 C++11 之前,case 语句的参数必须是整型常量表达式。最简单的方法是使用 const int 或实际的 enum。如果您使用的是 C++11,那么您可以简单地使用内置的 enum class 支持。查看scoped enumerations .

关于c++ - 将静态常量类实例用于开关/案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26678432/

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