如何將作爲類成員的枚舉的運算符重載爲<。具體而言,我有以下代碼如下:重載運算符<<用於成員函數中某個類的枚舉成員
#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