如何为作为类成员的枚举重载 << 运算符。具体来说,我有以下代码:
#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”?
最佳答案
这是一个简单的解决方案:
#include <iostream>
using namespace std;
namespace foo {
class bar {
public:
enum a { b, c, d};
static void print();
};
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;
}
void bar::print() {
cout << b << endl;
}
}
int main() {
foo::bar::print();
return 0;
}
[编辑] 正如 aschepler 先前所述,您只需要确保 operator<<(ostream &, bar::a)
在 bar::print
的定义之前可见.
关于c++ - 为成员函数中类的枚举成员重载运算符 <<,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4147854/