gpt4 book ai didi

c++ - 如何在没有范围的情况下使用枚举类

转载 作者:搜寻专家 更新时间:2023-10-31 00:31:53 24 4
gpt4 key购买 nike

我需要在一个代码块中多次使用枚举类的枚举器,我想避免使用 C++03 中的经典枚举。

enum class Color {RED, GREEN};
{
Color::RED //this works
RED; //how do I make this work (only for this block)?
}

我试过用

using namespace Color;

但它显然不起作用,因为 Color 不是命名空间。

最佳答案

这是不可能的:

7.3.3p7 The using declaration [namespace.udecl] (n3337)

A using-declaration shall not name a scoped enumerator.

您可以使用decltype 创建类型别名:

using RED = decltype(red);

确实在 Clang 中工作,但它是一个 reported bug .

解决方法是使用变量。

Color red = Color::RED;

重新阅读问题,听起来您想将枚举的所有 变量都纳入作用域,而不仅仅是一个成员。我建议你阅读 proposal enum class 查看它试图解决的一些问题。范围枚举的全部要点是避免将其成员注入(inject)封闭范围。

所以只需使用常规枚举。

关于c++ - 如何在没有范围的情况下使用枚举类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32794789/

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