3

下面是我在 Ball 类的头文件中创建的枚举:

typedef enum   {
redBall = 0,
blueBall = 1,
greenBall = 2

}ballTypes;

并在界面中:

ballTypes ballType;

在 Ball.mm 的 init 方法中,我初始化了 ballType 如下:

ballType = 0;

我收到以下错误:

Assigning to 'ballTypes' from incompatible type 'int'

我该如何解决这个问题?

4

2 回答 2

3

枚举应该用NS_ENUM宏定义:

typedef NS_ENUM(NSInteger, BallType) {
    BallTypeNone  = 0,
    BallTypeRed   = 1,
    BallTypeBlue  = 2,
    BallTypeGreen = 3
};

BallType ballType;

ballType = BallTypeNone;

通常,名称以大写字母开头,每个值都是附加了有意义的描述的名称。

于 2013-06-05T15:29:48.103 回答
1

BallTypes是一种类型,int(literal 0) 是一种类型,它们不能在没有强制转换的情况下混合。

创建一个无效的球类型并使用它:

typedef enum   {
    noBall,
    redBall,
    blueBall,
    greenBall
} ballTypes;

...

ballType = noBall;

注意:通常枚举是大写的......

于 2013-06-05T15:26:29.110 回答