首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >枚举定制:可以创建subEnum吗?

枚举定制:可以创建subEnum吗?
EN

Stack Overflow用户
提问于 2012-11-06 19:54:56
回答 1查看 216关注 0票数 4

所以,这是代码:

代码语言:javascript
运行
复制
typedef enum{
    zero, one, two, three, four, five, six, seven, eight, nine
}Digits;

typedef enum{
    zero, one, two, nine 
}DigitsThatILikeToUse;

问题:如果我定义函数:

代码语言:javascript
运行
复制
void takeMyFavoriteDigits(DigitsThatILikeToUse favorite); (C)

-|+(void) takeMyFavoriteDigits:(DigitsThatILikeToUse)favorite; (Objective-C)

我不能在反向引用基本enum Digits时使用它,因为我在enum DigitsThatILikeToUse中的顺序不同。

我的解决方案是这样写数字的显式位置:

代码语言:javascript
运行
复制
typedef enum{
    zero = 0, one = 1, two = 2, nine = 9 
}DigitsThatILikeToUseInEdition;

但!我不能遍历这个新的enum DigitsThatILikeToUseInEdition

我想在enum中创建一个subEnum并遍历它。有可能吗?

我最好的想法是使用这样的东西:

代码语言:javascript
运行
复制
typedef enum{
        beginIteratorDigitsThatILike, zero, one, two, nine, endIteratorDigitsThatILike, three, four, five, six, seven, eight
    }Digits;

但也许有什么解决方案呢?

EN

Stack Overflow用户

回答已采纳

发布于 2012-11-07 19:25:17

因为(大多数情况下)没有不能通过添加更多间接级别来解决的问题:

代码语言:javascript
运行
复制
typedef enum enumDigits {
  digitsNone = -1, 
  digitsZero, digitsOne, digitsTwo, digitsThree, digitsFour, digitsFive, digitsSix, digitsSeven, digitsEight, digitsNine, 
  digitsMax
} Digits_t;

typedef enum enumDigitsIndexIdLikeToUse {
  digitsIndexIdLikeToUseNone = -1, 
  digitsIndexIdLikeToUseZero, digitsIndexIdLikeToUseOne, digitsIndexIdLikeToUseTwo, digitsIndexIdLikeToUseThree, digitsIndexIdLikeToUseFour, 
  digitsIndexIdLikeToUseMax
} DigitsIndexIdLikeToUse_t;

const Digits_t digitsIdLikeToUse[digitsIndexIdLikeToUseMax] = {
  digitsZero, digitsOne, digitsTwo, digitsNine
}

假设你想使用至少1个didigt,你可以这样做:

代码语言:javascript
运行
复制
Digits_t digitIdLikeToUse = digitNone;

...

for (DigitsIndexIdLikeToUse_t digitIndexIdLikeToUse = digitsIndexIdLikeToUseZero, digit = digitsIdLikeToUse[digitIndexIdLikeToUse];
  digitsIndexIdLikeToUse < digitsIndexIdLikeToUseMax;
  ++ digitsIndexIdLikeToUse)
{
  <do something with digitIdLikeToUse>
}
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13250491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档