【问题标题】:Don't understand the reason for "Expected a type" compilation error in a method declaration, when the type is defined不明白定义类型时方法声明中出现“Expected a type”编译错误的原因
【发布时间】:2012-03-01 06:50:32
【问题描述】:

此代码不会编译并生成错误消息“预期类型”。由于类型是在上面声明的,我不明白为什么。

enum TMyType
{
    Etype1,
    Etype2
};

@interface Factory : NSObject

+ (void) foo: (TMyType) actionType;

@end

【问题讨论】:

    标签: objective-c ios types enums


    【解决方案1】:
    + (void) foo: (enum TMyType) actionType;
    

    或使用.mm(并使用objective-c++重新标记问题)。

    【讨论】:

    • 谢谢,.mm 代表什么?
    • @Mungbeans 它代表一个objective-c++源文件。在 C/Obj-C 中,枚举必须是完全类型的,例如enum myType myArg = myEnumValue;。在 C++ 中,您可以像这样简单地引用它:myType myArg = myEnumValue;,因为 C++ 编译器会自动推断出 enum
    • 并不是我反对反对票,但我希望得到解释。
    【解决方案2】:

    要定义自定义类型,正确的方法是使用 typedef。

    试试……

    typedef enum 
    {
        Etype1,
        Etype2
    } TMyType;
    

    编辑: 在提出并回答这个问题后不久,Apple 推出了一种处理枚举数据类型的新方法。 Here's 有深度文章。

    typedef NS_ENUM(NSInteger, TMyType) {
        Etype1,
        Etype2
    };
    

    【讨论】:

      猜你喜欢
      • 2023-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多