gpt4 book ai didi

c++ - 案例表达式不恒定

转载 作者:IT老高 更新时间:2023-10-28 22:19:21 25 4
gpt4 key购买 nike

我在 switch 语句中收到“case expression not constant”错误。但是, header 为使用的常量提供了定义,构造函数在其初始化列表中为它们提供了初始化。

此外,当我将鼠标悬停在“问题”语句上时,它会将它们标识为常量。

const int ThisClass::EXAMPLE_CONSTANT

error expression must have a constant value

这对我来说似乎有点违反直觉。我做了一些研究,发现了其他人遇到的类似问题。他们被告知所有常量实际上必须在“main”中初始化,这是语言的限制。真的是这样吗?似乎不太可能。

最佳答案

case 语句需要在编译时必须知道的整数值,这就是这里 constant 的含义。但是 classconst 成员并不是真正意义上的 constant。它们只是只读的。

你可以使用 enum 代替字段:

class ThisClass
{
public:

enum Constants
{
EXAMPLE_CONSTANT = 10,
ANOTHER_CONSTANT = 20
};
};

然后你就可以写了,

switch(c)
{
case ThisClass::EXAMPLE_CONSTANT:
//code
break;
case ThisClass::ANOTHER_CONSTANT:
//code
break;
};

关于c++ - 案例表达式不恒定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8049834/

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