【问题标题】:Creating a stack which deals with enum types?创建一个处理枚举类型的堆栈?
【发布时间】:2012-05-28 20:10:16
【问题描述】:

我使用了在http://www.codeproject.com/Tips/226892/How-to-implement-Stack-in-Object-C 创建的堆栈,它可以接受任何对象,但我实际上想用它来存储enum 类型。

当我尝试为其分配enum 时,编译器说enum 无法转换为id。我该怎么办?

【问题讨论】:

  • 枚举是什么类型?如果它是 int 你可以把它包裹在一个 NSNumber 中。
  • 我创建了一个标记类型,用于表示方程式的一部分。例如NUMBER、BRACKET_LEFT

标签: objective-c enums stack


【解决方案1】:

如果您的堆栈存储 NSObjects,您可以简单地将枚举值转换为整数(它们是)并将它们装箱到 NSNumber:

加入堆栈:

NSNumber *boxedValue = [NSNumber numberWithInteger:eMyEnumValue];
[stack push:boxedValue];

从堆栈中检索:

NSNumber *boxedValue = [stack pop];
MyEnum enumValue = (MyEnum) [boxedValue integerValue];

【讨论】:

  • 不...这是一个有效的问题。现在你永远不会忘记。 :-)
  • 顺便谢谢,否则我会一整个星期都糊涂。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-05
  • 2022-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多