gpt4 book ai didi

c++ - 在 C++ 中为 enum 分配一个 int 值,反之亦然

转载 作者:行者123 更新时间:2023-12-01 14:37:14 26 4
gpt4 key购买 nike

#include <iostream>    

typedef enum my_time {
day,
night
} my_time;

int main(){
// my_time t1 = 1; <-- will not compile
int t2 = night;
return 0;
}
如何期望我可以分配一个 enum值到 int但不是在 C++ 中的另一种方式?
当然,这在 C 中都是可行的.

最佳答案

隐式转换或一般转换不是相互的。只是因为一个类型A可以转换为类型 B并不意味着 B可以转换为A .
旧的枚举(无作用域的枚举)可以转换为整数,但另一种方式是不可能的(隐式)。这就是它的定义方式。详情请看这里:https://en.cppreference.com/w/cpp/language/enum
粗略地考虑一下 enum s 只是命名常量和函数

void foo(my_time x);
传递任意 int 很可能是错误的。 .然而,一个
void bar(int x);
可以对 x 的特殊值使用枚举而其他人仍然被允许:
 enum bar_parameter { NONE, ONE, MORE, EVEN_MORE, SOME_OTHER_NAME };
bar(NONE);
bar(SOME_OTHER_NAME);
bar(42);
这已在 C++11 中“修复”,其中作用域枚举不会以任何方式隐式转换。

关于c++ - 在 C++ 中为 enum 分配一个 int 值,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62786353/

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