C++ 为什么尝试在c++;给一个错误?

C++ 为什么尝试在c++;给一个错误?,c++,C++,我想打印单位为km的u enum class Unit { km, m, cm }; int main() { Unit u = Unit::km; std::cout<<u; return 0; } enum类单位{km,m,cm}; int main() { 单位u=单位:公里; std::cout您的单元枚举是一个作用域枚举,枚举类,这些类型的枚举不允许隐式强制转换。如果您希望它与cout一起工作,则必须显式强制转换: std::cout << stati

我想打印单位为km的u

enum class Unit { km, m, cm };

int main()
{
Unit u = Unit::km; 
std::cout<<u; 
return 0; 
}
enum类单位{km,m,cm};
int main()
{
单位u=单位:公里;

std::cout您的
单元
枚举是一个作用域枚举,
枚举类
,这些类型的枚举不允许隐式强制转换。如果您希望它与
cout
一起工作,则必须显式强制转换:

std::cout << static_cast<int>(u);

std::cout您的
单元
enum是一个作用域枚举,
enum类
,这些类型的枚举不允许隐式强制转换。如果希望它与
cout
一起工作,您必须显式强制转换:

std::cout << static_cast<int>(u);

std::当您对编译代码时收到的错误有疑问时,不能始终包含逐字错误消息。应该是在我运行它时,我得到了
错误:“cout”未在此范围内声明
,所以我假设是这样?始终包含逐字错误消息当您对编译代码时收到的错误有疑问时。应该是在我运行它时,我得到了
错误:cout'未在此范围内声明
,所以我假设是这样的?最好使用
std::underlined_type
()@最大的素数是足够公平的,在本例中保证为
int
。更好地使用
std::底层的素数类型
()@maximust\u素数是足够公平的,在本例中保证为
int