以下是否有效:
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;
答案 0 :(得分:8)
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
之前的值{。}}。
答案 1 :(得分:1)
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.