У меня есть класс вроде следующего:
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.
Да, я работаю над кросс-платформенным проектом.
Я нашел это решение, но похоже... тяжелое.
Я надеюсь, что кто-то может мне помочь здесь:)