gpt4 book ai didi

c++ - 枚举值的类型不是 int?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:24:56 25 4
gpt4 key购买 nike

因为 c++ 枚举的 c++ 底层类型应该是 int。

但是有代码

enum class Properties{ first , second }
void tmp ( int i ) {}

tmp( Properties::first )

编译器提示 Properties::first 不是 int 而是 Properties 类型。

我真的必须将它转换为 int 才能将枚举值传递给函数吗?还是有解决方法?

感谢您的帮助。

最佳答案

Properties 是一个作用域枚举 类型。那是因为您在定义它时使用了 class 关键字。作用域枚举不能隐式转换为它们的基础类型(或任何整型,就此而言)。这是设计使然。

如果您想要转换,只需将其设为无作用域枚举即可:

enum Properties{ first , second };

还有使用命名空间的妥协:

namespace Properties {
enum { first , second };
}

这将通过完全限定的 ID 为您提供所需的访问权限,同时保留隐式转换。

关于c++ - 枚举值的类型不是 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47501151/

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