如何将作为类成员的枚举的运算符重载为<。具体而言,我有以下代码如下:重载运算符<<用于成员函数中某个类的枚举成员
#include <iostream>
using namespace std;
namespace foo {
class bar {
public:
enum a { b, c, d};
static void print() {
cout << b << endl;
}
};
ostream& operator<< (ostream& os, bar::a var) {
switch (var) {
case bar::b:
return os << "b";
case bar::c:
return os << "c";
case bar::d:
return os << "d";
}
return os;
}
}
int main() {
foo::bar::print();
return 0;
}
如何获得打印功能打印“b”而不是“1”?
尝试确保'foo :: bar :: print()'的定义之前,'operator <<'重载的声明是可见的。 – aschepler 2010-11-10 18:49:02
@aschepler:这是正确的答案。 – 2010-11-10 18:51:26