C++ 如何在枚举上设置范围?

C++ 如何在枚举上设置范围?,c++,c++11,enums,C++,C++11,Enums,我有一个赋值,我必须使用枚举来存储字母值。该链接已提供 我完全不知道如何使用枚举来设置常量中的值范围 //我想做什么 枚举类字母{A+,A,B+,B等..} 但是,我已经对A中的“+”有了问题 在此问题上提供任何帮助将不胜感激+不是可在该上下文中使用的法律字符。使用其他工具,例如A\u PLUS enum class Letter { A_PLUS, A, B_PLUS, B, etc... } +不是可在该上下文中使用的合法字符。使用其他工具,例如A\u PLUS enum class

我有一个赋值,我必须使用枚举来存储字母值。该链接已提供

我完全不知道如何使用枚举来设置常量中的值范围


//我想做什么
枚举类字母{A+,A,B+,B等..}

但是,我已经对A中的“+”有了问题


在此问题上提供任何帮助将不胜感激

+
不是可在该上下文中使用的法律字符。使用其他工具,例如
A\u PLUS

enum class Letter { A_PLUS, A, B_PLUS, B, etc... }

+
不是可在该上下文中使用的合法字符。使用其他工具,例如
A\u PLUS

enum class Letter { A_PLUS, A, B_PLUS, B, etc... }

正如HolyBlackCat所说,不能为枚举数指定范围。正如R Sahu所说,您不能在标识符中使用
+
,阅读可以了解更多信息。除了预处理器宏/定义(以及单字母、模板参数),最好避免所有大写(带下划线或不带下划线)标识符。无论如何,您可以这样做:

enum class Grade { a_plus, a, b_plus, b, ... };

Grade score_to_grade(int score)
{
    return score >= 90 ? Grade::a_plus :
           score >= 80 ? Grade::a :
           score >= 75 ? Grade::b_plus :
           ...
           score >= 50 ? Grade::d :
           Grade::f;
}
?:事情就是这样。在上面,它是一个更简洁(一旦你习惯了,可读性)的等价物:

if (score >= 90) return Grade::a_plus;
if (score >= 80) return Grade::a;
...

正如HolyBlackCat所说,不能为枚举数指定范围。正如R Sahu所说,您不能在标识符中使用
+
,阅读可以了解更多信息。除了预处理器宏/定义(以及单字母、模板参数),最好避免所有大写(带下划线或不带下划线)标识符。无论如何,您可以这样做:

enum class Grade { a_plus, a, b_plus, b, ... };

Grade score_to_grade(int score)
{
    return score >= 90 ? Grade::a_plus :
           score >= 80 ? Grade::a :
           score >= 75 ? Grade::b_plus :
           ...
           score >= 50 ? Grade::d :
           Grade::f;
}
?:事情就是这样。在上面,它是一个更简洁(一旦你习惯了,可读性)的等价物:

if (score >= 90) return Grade::a_plus;
if (score >= 80) return Grade::a;
...

也不能将范围指定给枚举常量。必须编写一些代码才能将范围转换为常量。如果实际的字符序列“A+”很重要,则可能需要使用std::一组std::字符串。此外,不能将范围分配给枚举常量。您必须编写一些代码来将范围转换为常量。如果实际的字符序列“A+”很重要,那么您可能需要使用一组std::字符串。