2013-04-20 22 views
7

Więc mam ten nazw zwane paddleNS dla klasy zwane wiosła, wewnątrz paddleNS Mam enum znany jako kolorC++ Funkcja zwracania wyliczenia?

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

A teraz, co ja zastanawiałem się jak bym go o stworzenie funkcji, która będzie zwracać jaki jest obecnie obecny kolor, czy istnieje łatwiejszy sposób na zwrócenie go w formie tekstowej zamiast wartości, czy lepiej po prostu użyć przełącznika, aby dowiedzieć się, jaki jest kolor?

Odpowiedz

13

Wystarczy zwrócić wyliczenia według wartości:

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

    paddleNS::COLOUR currentColour() const { return colour; } 
}; 
+0

Czy istnieje prostszy sposób na zwrócenie go w formie tekstowej, czy lepiej po prostu użyć przełącznika, aby dowiedzieć się, jaki jest kolor? - To było to, czego mi brakowało, To jest moje złe. – Andy

+0

@Andy chcesz uzyskać ciąg twoich wyliczeń? – emesx

+0

Jeśli to możliwe, tak. – Andy

1
class Paddle : public Entity 
{ 
    // ---- 

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

przechowywać tablicę ciągów gdzie indix do tej tablicy ciągów odpowiada wartości enum używasz.

Więc jeśli masz:

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

bym wtedy mieć tablicę zdefiniowane:

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

Wtedy, gdy masz funkcję powrotu enum tego typu można po prostu umieścić go w array i pobierz poprawny kolor w formacie ciągu znaków.