У меня возникли некоторые проблемы при попытке перегрузить оператор + = для перечисления, которое я определил в пространстве имен. Мне не нужно на самом деле использовать оператор, однако библиотека, которую я использую (boost :: icl), требует, чтобы оператор + = был определен для данных, которые я храню в карте интервалов. Всякий раз, когда я пытаюсь скомпилировать приведенный ниже код, я получаю следующую ошибку компилятора с использованием Intel 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;
}
Вы можете использовать бесплатную функцию:
events & operator+= (events &lhs, const events &rhs);
(протестировано с GCC 4.8, если Intel C ++ отклоняет его, я думаю, что это ошибка)
Других решений пока нет …