функция 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}

затем, когда у вас есть функция, возвращающая перечисление этого типа, вы можете просто поместить его в свой массив и получить правильный цвет в строковом формате.