我有一个简单的类,它使用enum作为“status”。当我使用getStatus
成员函数时,它确实返回“Busy”但是当我打印该值时,它显示“1”。如何打印“忙”而不是1?
#include <iostream>
using namespace std;
enum Status{Idle, Busy};
class text
{
public:
void SetStatus(Status s);
Status getStatus();
private:
Status s;
};
void text::SetStatus(Status s)
{
this->s = s;
}
Status text::getStatus()
{
return this->s;
}
int main()
{
text myText;
myText.SetStatus(Busy);
cout << myText.getStatus() << endl; //outputs 1, should output "Busy"
}
答案 0 :(得分:4)
这里有一个完整的工作编辑: http://ideone.com/WFo4g
添加:
std::ostream& operator<<(std::ostream& os, const Status status)
{
switch (status)
{
case Idle: return os << "Idle";
case Busy: return os << "Busy";
default: return os << "Status:" << status;
}
return os << "<error>";
}
答案 1 :(得分:2)
你不能没有进一步的工作。 Busy
只是一个在编译时存在的标识符,以方便您使用。在编译期间,编译器用实际值1
替换它的所有出现。
为了让它按你想要的方式工作,你需要一个额外的数组或映射,从枚举值到描述枚举标识符的字符串。