Return the enumeration instead of the index
本问题已经有最佳答案,请猛点这里访问。
我有一个简单的类,它使用枚举来表示"状态"。当我使用
http://codepad.org/9ndlxyu演示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #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" } |
这里有一个完全有效的编辑:http://ideone.com/wfo4g
添加:
1 2 3 4 5 6 7 8 9 10 11 | 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>"; } |
你不能不做进一步的工作。
为了让它按您的需要工作,您需要一个额外的数组或从枚举值到描述枚举标识符的字符串的映射。