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