2013-04-20 104 views
7

所以我这个命名空间称为paddleNS的类名为桨,里面paddleNS我有一个称为颜色枚举C++函数返回一个枚举?

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

那么现在,我不知道是我将如何去创造它返回功能目前的颜色还有一个更简单的方法来返回它的文本形式,而不是一个值或我更好的只是使用开关来找出什么颜色?

回答

13

仅仅通过值返回枚举:

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

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

有没有一种更简单的方式来返回它的文本形式虽然或者我只是使用开关来找出什么颜色是更好? - 这是我错过了一点,这是我的坏.. – Andy 2013-04-20 09:39:23

+0

@你想要一个你的枚举的字符串表示? – emesx 2013-04-20 09:39:59

+0

如果可能,是的。 – Andy 2013-04-20 09:40:19

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

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

保持字符串数组,其中在这个字符串数组的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} 

然后,当你有一个函数返回该类型的枚举你可以把它变成你的数组并获得字符串格式的正确颜色。