функция c++ для возврата перечисления?
Итак, у меня есть это пространство имен paddleNS для класса paddle, внутри paddleNS у меня есть перечисление, известное как color
namespace paddleNS
{
enum COLOUR {WHITE = 0, RED = 1, PURPLE = 2, BLUE = 3, GREEN = 4, YELLOW = 5, ORANGE = 6};
}
class Paddle : public Entity
{
private:
paddleNS::COLOUR colour;
public:
void NextColour();
void PreviousColour();
void PaddleColour(paddleNS::COLOUR col) { colour = col; }
};
теперь, то, что мне было интересно, как бы я пошел о создании функции, которая вернет то, что цвет в настоящее время также есть более простой способ вернуть его в текстовой форме вместо значения или мне лучше просто использовать переключатель, чтобы выяснить, что такое цвет?
3 ответов
просто верните перечисление по значению:
class Paddle : public Entity
{
// as before...
paddleNS::COLOUR currentColour() const { return colour; }
};
class Paddle : public Entity
{
// ----
const char* currentColour() const {
switch(couleur)
{
case WHITE:
return "white";
break;
//And so on
}
}
};
сохраните массив строк, где indix в этом массиве строк соответствует используемому вами значению перечисления.
Так что если у вас есть:
enum COLOUR {WHITE = 0, RED = 1, PURPLE = 2, BLUE = 3, GREEN = 4, YELLOW = 5, ORANGE = 6};
Я бы тогда определил массив:
String colors[] = {white, red, purple, blue, green, yellow, orange}
затем, когда у вас есть функция, возвращающая перечисление этого типа, вы можете просто поместить его в свой массив и получить правильный цвет в строковом формате.