【发布时间】:2013-09-09 16:10:28
【问题描述】:
我在尝试为我在命名空间中定义的枚举重载 += 运算符时遇到了一些问题。我不需要实际使用运算符,但是,我正在使用的库 (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;
}
【问题讨论】:
-
你不能为枚举重载
operator+=。 -
我就是这么想的,但是我在网上找不到任何明确说明的内容...感谢您的确认。
-
即使你可以,你也不能为还没有成员函数的类型发明成员函数。
-
@juanchopanza 真的吗?它会遵循(至少对我而言),如果您可以为用户定义的数据结构定义运算符,那么您应该能够为现有类型重载或创建新的运算符。直到。感谢您的信息。
-
您必须在用户定义类型的定义中声明这些成员运算符。
标签: c++ boost enums operator-overloading boost-icl