如何获取枚举项的类型?
How to get type of enum item?
这里有一个新手问题...
如何制作元组类型,其中元组的项是enum
的特定项?
enum class MyEnum
{
MyEnum_FirstItem
};
typedef std::tuple<int, MyEnum::MyEnum_FirstItem> MyTuple; // constant "MyEnum::MyEnum_FirstItem" is not a type name
如何获取枚举项的类型而不是值?
附言用谷歌搜索了"获取枚举项目类型",但一无所获。
我来自TypeScript,我曾经在那里做过文档目的。此外,真正的问题可能应该是:c++ 中是否有任何确切的数字类型?
如何获取枚举项的类型?
MyEnum_FirstItem
的类型是MyEnum
.枚举器没有不同的类型。
(但是,请继续阅读...
你想在这里做什么?您是否正在尝试制作第二个参数只能具有值MyEnum_FirstItem的元组?– 斯内夫特尔 3 分钟前
@Sneftel 是的,正是 – 努尔博尔·阿尔皮斯巴耶夫 2 分钟前
在 c++ 中是否有任何确切的数字类型?
实际上,是的。
std::integral_constant<int, 3>
是表示int
值 3 的类型。它用于模板元编程。
也许你可以用它做点什么。因为,虽然MyEnum_FirstItem
不是它自己的类型,但你可以把它包装起来产生这样的东西,像这样:
std::integral_constant<MyEnum, MyEnum::MyEnum_FirstItem>
所以也许:
std::tuple<int, std::integral_constant<MyEnum, MyEnum::MyEnum_FirstItem>> MyTuple;
(参考资料(
我猜这个枚举的目的是作为一个"标签"来区分各种其他相同的元组类型,用于文档目的(并防止代码库中的"交叉污染"(。
如果是这样,我实际上只会为作业创建一堆空struct
,就像我们为其他标记实现所做的那样。
struct TagA {};
struct TagB {};
std::tuple<int, TagA> MyTuple;
它更易于使用和阅读,如果需要,您仍然可以将它们放入命名空间中。
您将类型与该类型的实例混淆了。MyEnum
是一种类型,MyEnum::MyEnum_FirstItem
是该类型的实例。尝试
typedef std::tuple<int, MyEnum> MyTuple;
然后稍后您可以将MyEnum::MyEnum_FirstItem
作为MyTuple
中的第二个值。
只是重申一下...
附言用谷歌搜索了"获取枚举项目类型",但一无所获。
MyEnum::MyEnum_FirstItem
的类型是MyEnum
.
- 在有符号基础类型枚举的位域上溢出
- 在编译时将强类型枚举器转换为其基础类型?
- 如果 int 是"not within the enums range",为什么将 int 转换为强类型枚举会编译?
- 类型枚举的变量不是类型名称
- 强类型枚举的语法实现错误
- 枚举与强类型枚举
- 错误:T没有命名类型-用于使用强类型枚举的专门化
- 如何使用强类型枚举
- QT:将强类型枚举参数传递到插槽
- 在类定义中声明类型(枚举、结构等)会增加代码大小
- Visual Studio 11 (beta) 中的强类型枚举类
- 使用强类型枚举对类型和子类型进行建模
- 不允许将强类型枚举用作同一基础类型的参数
- 如何正确使用C++强类型枚举
- 带有强类型枚举的模板参数推导
- 是否可以在googleprotobuf中为类型(枚举或消息)定义一个别名
- C++中默认初始化的全局强类型枚举是什么
- std::is_signed不适用于强类型枚举:int
- 如何定义自定义值的类型?(枚举类型定义)
- 将强类型枚举传递给函数