所以,这是代码:
typedef enum{
zero, one, two, three, four, five, six, seven, eight, nine
}Digits;
typedef enum{
zero, one, two, nine
}DigitsThatILikeToUse;问题:如果我定义函数:
void takeMyFavoriteDigits(DigitsThatILikeToUse favorite); (C)
-|+(void) takeMyFavoriteDigits:(DigitsThatILikeToUse)favorite; (Objective-C)我不能在反向引用基本enum Digits时使用它,因为我在enum DigitsThatILikeToUse中的顺序不同。
我的解决方案是这样写数字的显式位置:
typedef enum{
zero = 0, one = 1, two = 2, nine = 9
}DigitsThatILikeToUseInEdition;但!我不能遍历这个新的enum DigitsThatILikeToUseInEdition。
我想在enum中创建一个subEnum并遍历它。有可能吗?
我最好的想法是使用这样的东西:
typedef enum{
beginIteratorDigitsThatILike, zero, one, two, nine, endIteratorDigitsThatILike, three, four, five, six, seven, eight
}Digits;但也许有什么解决方案呢?
发布于 2012-11-07 19:25:17
因为(大多数情况下)没有不能通过添加更多间接级别来解决的问题:
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,你可以这样做:
Digits_t digitIdLikeToUse = digitNone;
...
for (DigitsIndexIdLikeToUse_t digitIndexIdLikeToUse = digitsIndexIdLikeToUseZero, digit = digitsIdLikeToUse[digitIndexIdLikeToUse];
digitsIndexIdLikeToUse < digitsIndexIdLikeToUseMax;
++ digitsIndexIdLikeToUse)
{
<do something with digitIdLikeToUse>
}https://stackoverflow.com/questions/13250491
复制相似问题