尝试重载operator = for枚举时的编译器错误

时间:2013-09-09 16:10:28

标签: c++ boost enums operator-overloading boost-icl

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

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

有什么建议吗?

test.h:

namespace test {

    enum events {
        SHUTIN = 0,
        ACTIVE,
        RECOMPLETE,
        CTI,
        RTP
    };

   events & events::operator+= (const events &rhs);

}; // end namespace test

TEST.CPP:

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

1 个答案:

答案 0 :(得分:1)

您可以使用免费功能:

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

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