C++枚举问题。
所以我有一个文件的列表,以及它们的I,我需要遍历它们,并对它们做一些事情。大部分内容都是相同的,但有一些特定于文件的事情需要完成。我尝试将文件I放在一个枚举中,并对其进行迭代。但是,fileID是不连续的,可以跳来跳去。
目前,我有类似这样的东西
for(int i = 0; i < FILE_ENUM_MAX; i++)
{
currentFile = myEnum(i);
// do stuff
}
enum myEnum {
file1 = 0x1111,
file2 = 0x8000,
file3 = 0x75,
file4 = 0x120,
FILE_ENUM_MAX = 4
}这不起作用;我只是遍历了文件0、1、2和3。我的想法是,我不能通过请求项目N来获得枚举中的第N个项目。那么,迭代这个枚举的最好方法是什么?或者我应该干脆把它扔掉?我也许可以按数字顺序排列项目,但我更喜欢顺序无关紧要的解决方案。
发布于 2010-09-04 07:04:15
我猜技术含量较低的解决方案可能是跳过枚举,只创建一个静态数组:
#define ARRAYSIZE(a) (sizeof(a)/sizeof(a[0]))
int FILE_ENUM[] = { 0x1111, 0x8000, 0x75, 0x120 };
for(int i = 0; i < ARRAYSIZE(FILE_ENUM); i++) {
currentFile = myEnum[i];
// do stuff
}TJ
发布于 2010-09-04 06:50:05
不幸的是,C++没有提供您想要的遍历枚举的方法。
发布于 2010-09-04 06:52:04
我有两个建议:
std::vector包含枚举。std::map包含枚举。解决方案2提供了一个好处,其中键是文件ID,值可以是文件的名称(或包含文件属性的对象,如文件句柄或指针)。
https://stackoverflow.com/questions/3640063
复制相似问题