tôi có lớp học như sau:Truy cập để enum giá trị bằng '::' trong C++
class Car
{
public:
Car();
// Some functions and members and <b>enums</b>
enum Color
{
Red,
Blue,
Black
};
Color getColor();
void setColor(Color);
private:
Color myColor;
}
Tôi muốn:
- quyền truy cập vào
Color
giá trị nhưColor::Red
. Nó thực sự là khó để hiểu mã khiCar::Red
được sử dụng, khi lớp có một sự đếm rất nhiều, lớp con, vv - sử dụng loại
Color
như là đối số chức năng hoặc giá trị trả về - sử dụng loại biến
Color
trongswitch
tôi biết 3 giải pháp phần:
- Sử dụng nhúng lớp
Color
và enum trong đó - Sử dụng nhúng nam espace
Color
và enum trong đó - Sử dụng
enum class
1 và 2 giải pháp giải quyết một vấn đề Color::Red
gia nhập, nhưng tôi không thể sử dụng các chức năng như Color getColor()
và void setColor(Color)
.
3 giải pháp có vấn đề: VS2010 doen't support enum class
. GCC v.4.1.2 cũng không hỗ trợ nó. Tôi không biết về các phiên bản sau của gcc.
Có, tôi đang làm việc trên dự án đa nền tảng.
Tôi đã tìm thấy giải pháp this, nhưng có vẻ như ... nặng.
Tôi hy vọng ai đó có thể giúp tôi đây :)
GCC 4.6 (với '-std = C++ 0x') hỗ trợ' enum class', và cũng cho phép 'Color :: Red' cho các enums thông thường. – leftaroundabout
lưu ý phụ, vui lòng thụt lề mã với 4 dấu cách thay vì sử dụng thẻ trước/mã – CharlesB
Tôi tìm thấy so với VS2010 đã ** hỗ trợ một phần ** [enums gõ mạnh] (http://www.open-std.org/jtc1/ sc22/wg21/docs/papers/2007/n2347.pdf). – Jury