尝试为枚举重载运算符+= 时编译器错误

Compiler errors when trying to overload operator+= for an enum

本文关键字:编译器 错误 运算符 枚举 重载      更新时间:2023-10-16

我在尝试重载我在命名空间中定义的枚举的 += 运算符时遇到了一些问题。我不需要实际使用运算符,但是,我正在使用的库 (boost::icl) 要求为我存储在间隔图中的数据定义 += 运算符。每当我尝试编译下面的代码时,我都会收到以下使用英特尔C++编译器错误:

error : enum "test::events" has no member "operator+="

有什么建议吗?

测试.h:

namespace test {
    enum events {
        SHUTIN = 0,
        ACTIVE,
        RECOMPLETE,
        CTI,
        RTP
    };
   events & events::operator+= (const events &rhs);
}; // end namespace test

测试.cpp:

test::events & test::events::operator+= (const test::events &rhs) {
    return *this;
}

您可以使用自由函数:

events & operator+= (events &lhs, const events &rhs);

(使用 GCC 4.8 进行测试,如果英特尔C++拒绝它,我会认为这是一个错误)