小编Raw*_*305的帖子

用于体系结构 x86_64 的 C++ 重复符号..递增枚举类型

我正在尝试增加枚举类型,因此我以这种方式重载了运算符 ++:

 enum QuarterType{
            FIRST_QUARTER,
            SECOND_QUARTER,
            THIRD_QUARTER,
            FOURTH_QUARTER
        };
Run Code Online (Sandbox Code Playgroud)

重载运算符++:

QuarterType& operator++(QuarterType& quarter){
    switch (quarter) {
        case FIRST_QUARTER:
            return quarter= SECOND_QUARTER;
        case SECOND_QUARTER:
            return quarter=THIRD_QUARTER;
        case THIRD_QUARTER:
            return quarter=FOURTH_QUARTER;
        case FOURTH_QUARTER:
            return quarter=FIRST_QUARTER;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我编译项目时出现错误:

duplicate symbol __ZN3mtmppERNS_11QuarterTypeE in:
    /Users/../Library/Developer/Xcode/DerivedData/mtm-crtygivbbxwmodgeasndvnjnpczt/Build/Intermediates/mtm.build/Debug/mtm.build/Objects-normal/x86_64/SecurityExample.o
    /Users/../Library/Developer/Xcode/DerivedData/mtm-crtygivbbxwmodgeasndvnjnpczt/Build/Intermediates/mtm.build/Debug/mtm.build/Objects-normal/x86_64/Quarters.o
duplicate symbol __ZN3mtmppERNS_11QuarterTypeE in:
    /Users/../Library/Developer/Xcode/DerivedData/mtm-crtygivbbxwmodgeasndvnjnpczt/Build/Intermediates/mtm.build/Debug/mtm.build/Objects-normal/x86_64/SecurityExample.o
    /Users/../Library/Developer/Xcode/DerivedData/mtm-crtygivbbxwmodgeasndvnjnpczt/Build/Intermediates/mtm.build/Debug/mtm.build/Objects-normal/x86_64/Security.o
ld: 2 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?增加枚举类型的正确方法或更好的方法是什么?

c++ enums

2
推荐指数
1
解决办法
1261
查看次数

标签 统计

c++ ×1

enums ×1