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



我有一个枚举

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

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

- (enum Enums)getEnum;

在我的.m文件中,我有

- (enum Enums) getEnum {
    return kOne;
}

然而,我得到错误

从具有不兼容结果类型"enum Enums"的函数返回"int"

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

您的方法签名应该是:

- (Enums)getEnum;

我认为您需要要么去掉typedef enum {} Enums中的typedef,要么去掉方法返回类型中的enum

在.m文件中,它必须是

- (Enums) getEnum {
    return kOne;
}

但是.h文件仍然是

- (enum Enums) getEnum;

您只需要

- (Enums) getEnum;
- (Enums) getEnum {
    return kOne;
}

CCD_ 3用于定义。

此外,Objective-C有更好的NS_ENUM用于编译时检查,请参阅本文了解更多信息:

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

您必须命名您的枚举和typedef以及名称。您可以在定义中避免(枚举),这看起来更加清晰。

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

typedef枚举枚举枚举;

现在函数可以声明为,

Enums getEnum ();

并且函数可以定义为,

Enums getEnum {
    return kOne;
}

最新更新