是否可以使用枚举访问数组
Is it possible to use an enum to have access to an array?
以下操作是否有效:
enum TileBmp {Mask, Grass, Sand, Snow, Swamp, Paved, Rock, Savannah, Lava}
ID2D1Bitmap* pBmpTile[TileBmp];
这会创建一个9大小的数组吗?在这个数组中,任何元素都可以使用其编号或名称进行访问?例如,pBmpTile[3]和pBmpTile[Snow]是否都引用相同的ID2D1Bitmap*?
我现在不能尝试,而且要到某些时候才能尝试。否则我会自己尝试。
如果这不起作用,有没有比更清洁的替代品
ID2D1Bitmap* pBmpTile[9]
和
ID2D1Bitmap* pBmpMask, pBmpGrass, pBmpSand, pBmpSnow, pBmpSwamp, pBmpPaved, pBmpRock, pBmpSavannah, pBmpLava;
TileBmp
是类型,并且您的数组声明需要数字而不是型。
这将起作用,因为单个enum
值可以转换为整数。
enum TileBmp {Mask, Grass, Sand, Snow, Swamp, Paved, Rock, Savannah, Lava, TILEBMP_COUNT};
ID2D1Bitmap* pBmpTile[TILEBMP_COUNT];
pBmpTile[3]和pBmpTile[Snow]是否都引用相同的ID2D1Bitmap*?
在这个例子中,是的。
除非另有规定,否则enum
中的第一个值可转换为0
,其他每个枚举的1
都大于它之前的enum
。
ID2D1Bitmap* pBmpTile[TileBmp];
不会起作用。枚举名称不是主表达式,不能用作数组大小。
但是,您可以使用枚举字段来访问数组元素,因为枚举字段映射到整数。例如:
enum TileBmp {Mask, Grass, Sand, Snow, Swamp, Paved, Rock, Savannah, Lava};
int A[10] = {0,1,2,3,4,5,6,7,8,9};
std::cout << A[Sand]; //it will print 2 in this case.
相关文章:
- 在 C++ 中访问数组负索引处的内存不会返回垃圾
- 使用指针访问数组中的对象数据成员
- VTK 图像数据,访问数组中的 1 个图像
- 调用函数后无法访问数组
- 如何从地图访问数组的元素?
- 访问数组中的不同元素
- 使用指针访问数组元素时出现意外结果
- 使用指针访问数组的值
- C++基于1而不是0的访问数组,方法是在编译时移位
- 如何在主函数之外访问数组?
- 如何在 llvm 的 cpp api 中使用 CreateInBoundsGEP 来访问数组的元素?
- 访问数组中所有结构的成员
- C 是否每次访问数组时都复制元素?
- C++ 为什么访问数组中的元素会返回指针?
- 如何通过指针访问数组的元素
- 指针数组交换无需直接访问数组
- 直接从指针/地址访问数组的元素
- 我有一个 Qt 对象的 2d 数组,我已经用值播种了这些对象。如何访问数组中特定对象的值并更改它们?
- 如何使用 C+ 中的指针访问数组中的特定索引
- 通过两个下标访问数组成员