对于typedef enum,返回类型枚举EnumName在返回枚举成员时会产生编译器错误

时间:2014-04-23 21:25:49

标签: objective-c enums compiler-errors typedef return-type

我有一个枚举

typedef enum {
    kOne,
    kTwo,
    kThree,
    kFour
} Enums;

而且,在我的.h文件中,我有

- (enum Enums)getEnum;

在我的.m文件中我有

- (enum Enums) getEnum {
    return kOne;
}

但是,我收到了错误

  

从具有不兼容结果类型'枚举枚举'

的函数返回'int'

我正在返回其中一个枚举,所以我不确定错误是什么。

5 个答案:

答案 0 :(得分:3)

您的方法签名应为:

- (Enums)getEnum;

答案 1 :(得分:1)

我认为您需要删除typedef enum {} Enums中的typedef或删除方法返回类型中的enum

答案 2 :(得分:0)

你只需要

- (Enums) getEnum;

- (Enums) getEnum {
    return kOne;
}

enum用于定义。

Objective-C还有更好的NS_ENUM用于编译时检查,有关详细信息,请参阅this post

typedef NS_ENUM(NSInteger, Enums) {
    kOne,
    kTwo,
    kThree,
    kFour
};

答案 3 :(得分:0)

在.m文件中必须是

- (Enums) getEnum {
    return kOne;
}

但.h文件仍然是

- (enum Enums) getEnum;

答案 4 :(得分:0)

您必须将您的枚举和typedef命名为name。您可以在定义中避免使用(枚举),这看起来更清晰。

enum enums {
    kOne,
    kTwo,
    kThree,
    kFour
};

typedef enum枚举枚举;

现在函数可以声明为,

Enums getEnum ();

和函数可以定义为,

Enums getEnum {
    return kOne;
}