У меня есть класс вроде следующего:
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;
}
Я хочу:
- доступ к значениям
Color
какColor::Red
. Это действительно трудно понять код, когда используетсяCar::Red
, когда класс имеет много перечислений, подклассы и т.д. - использовать тип
Color
как аргумент функции или возвращаемое значение - использовать тип переменной
Color
вswitch
Я знаю 3 частичных решения:
- Использование встроенного класса
Color
и перечисление в нем - Использование встроенного пространства имен
Color
и перечисление в нем - Использование
enum class
1 и 2 решают проблему присоединения Color::Red
, но я не могу использовать такие функции, как Color getColor()
и void setColor(Color)
.
3 имеет проблему: VS2010 не поддерживает enum class
. GCC v.4.1.2 тоже не поддерживает. Я не знаю о более поздних версиях gcc.
Да, я работаю над кросс-платформенным проектом.
Я нашел это решение, но похоже... тяжелое.
Я надеюсь, что кто-то может мне помочь здесь:)