Swift编译器错误重新定义' ACTION'

时间:2015-07-22 04:50:15

标签: c++ macos swift ios8

我在程序中遇到上述错误。我在swift中使用C ++代码(使用目标c)。它与IOS 8.4框架文件中存在的枚举冲突(IOS 8.4-> usr / include-> search.h)。如果我更改枚举的名称错误已解决,但我想知道错误的原因。欢迎任何有价值的想法。请看截图 error message

location of conflict flie conflict file

查看两个冲突文件中的枚举代码 main.h

    enum FilterConfigurationOrder
{
  NAME_WITH_CREATOR,  // name@mobile
  FROM_HHMM,
  TO_HHMM,
  FROM_YYYYMMDD,
  TO_YYYYMMDD,
  FROM_MOBILE,
  TO_MOBILE,
  FROM_LATITUDE,
  TO_LATITUDE,
  FROM_LONGITUDE,
  TO_LONGITUDE,
  AREANAME,
  IS_WITHIN_AREA,
  LOCATIONS_PER_MESSAGE,
  EVERY_X_MINUTES,
  ON_X_DAYS,
  ACTION1,
};
search.h中的

代码

typedef enum {
    FIND, ENTER
} ACTION;

1 个答案:

答案 0 :(得分:1)

枚举值与定义枚举本身的上下文中的变量和typedef共享相同的名称空间。

enum Foo {
    Bar;
}

typedef int Bar;

int main() {
    Bar ... //do I refer to typedef or enum value?
}

C ++ 11引入了一个新的构造" enum class"将其成员放在枚举名称下的单独名称空间中:

enum class Foo {
    Bar;
}

typedef int Bar;

int main() {
    Bar ... //typedef
    Foo::Bar ... //enum value
}