web-dev-qa-db-fra.com

c ++ Fonction pour retourner une énumération?

Donc, j'ai cet espace de noms appelé paddleNS pour la classe appelée Paddle, à l'intérieur de paddleNS, j'ai un enum appelé couleur

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; }
};

Maintenant, je me demandais comment je pourrais créer une fonction qui renverrait la couleur actuelle. Y a-t-il un moyen plus simple de la renvoyer sous forme de texte plutôt que de valeur ou suis-je mieux d’utiliser un commutateur vers comprendre quelle est la couleur?

10
Andy

Il suffit de renvoyer l'énumération par valeur:

class Paddle : public Entity
{
  // as before...

  paddleNS::COLOUR currentColour() const { return colour; }
};
14
juanchopanza
class Paddle : public Entity
{
  // ----

  const char* currentColour() const { 
switch(couleur)
{
 case WHITE:
   return "white";
   break;
//And so on
}
}
};
1
Husam Bdr

Conservez un tableau de chaînes où l'indix de ce tableau de chaînes correspond à la valeur enum que vous utilisez.

Donc si vous avez: 

enum COLOUR {WHITE = 0, RED = 1, PURPLE = 2, BLUE = 3, GREEN = 4, YELLOW = 5, ORANGE = 6};

J'aurais alors un tableau défini:

String colors[] = {white, red, purple, blue, green, yellow, orange}

Ensuite, quand une fonction renvoie une énumération de ce type, vous pouvez simplement la mettre dans votre tableau et obtenir la couleur correcte au format chaîne. 

1
aaron burns

Hé, vous pouvez créer votre fonction dans l'en-tête qui ressemble à ceci:

enum COLOUR function();

et quand vous définissez une fonction:

enum Paddle::COLOUR Paddle::function(){
        // return some variable that hold enum of COLOUR
}

dans main.cpp i enter code herepense que vous pouvez le gérer

0
Marko Ljuboja