【问题标题】:c++ Function to return an enum?c ++函数返回一个枚举?
【发布时间】:2013-04-20 09:36:06
【问题描述】:

所以我有一个名为 paddleNS 的命名空间,用于名为 paddle 的类,在 paddleNS 内部我有一个名为 colour 的枚举

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

现在,我想知道的是,我将如何创建一个返回当前颜色的函数,还有一种更简单的方法可以以文本形式而不是值返回它,还是我最好只使用一个开关来弄清楚颜色是什么?

【问题讨论】:

    标签: c++ function enums


    【解决方案1】:

    只需按值返回枚举:

    class Paddle : public Entity
    {
      // as before...
    
      paddleNS::COLOUR currentColour() const { return colour; }
    };
    

    【讨论】:

    • 有没有更简单的方法以文本形式返回它,或者我最好使用开关来确定颜色是什么? - 这是我错过的一点,那是我的错..
    • @Andy 你想要你的枚举的字符串表示吗?
    • @Andy 我认为这可能是问题所在。一个开关,或std::map<paddleNS::COLOUR, std::string>。尝试更准确地提出问题。 juanchopanza 回答了您实际提出的问题。
    • @Andy 你想要字符串形式的事实应该是你问题中最突出的部分!
    • @Andy 没有简单的方法,开关/地图是最简单的。或者留下枚举并创建/重用一些具有to_string() 方法的模板Enumeration<>
    【解决方案2】:

    嘿,您可以在标题中制作如下所示的函数:

    enum COLOUR function();
    

    当你定义一个函数时:

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

    在 main.cpp 我 enter code herethink 你可以管理它

    【讨论】:

      【解决方案3】:
      class Paddle : public Entity
      {
        // ----
      
        const char* currentColour() const { 
      switch(couleur)
      {
       case WHITE:
         return "white";
         break;
      //And so on
      }
      }
      };
      

      【讨论】:

        【解决方案4】:

        保留一个字符串数组,其中该字符串数组中的索引与您正在使用的枚举值匹配。

        如果你有:

        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}
        

        然后,当您有一个函数返回此类型的枚举时,您可以将其放入您的数组并以字符串格式获取正确的颜色。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-04-10
          • 1970-01-01
          • 1970-01-01
          • 2012-08-20
          • 2017-10-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多