Enum的结构

时间:2014-06-06 07:49:56

标签: c++ qt struct enums

我的问题并不是很难,但我无法在网上找到适合我的问题的答案。

我定义了一个包含结构的.h file并在其中声明了一些枚举。我想在另一个.cpp file中使用该结构。但是汇编会给我带来错误。

这是我的代码variableStruct.h file

struct variableSupervision {
    std::string Donnees;

    enum TYPE
    {
      ENUM,
      INT,
      FLOAT,
      BOOL
    };

    enum UNITE
    {
      ETAT,
      A,
      V,
      TBC,
      DEGREEE
    };

    enum IN
    {
      SYSTEMMONITOR,
      MODEMANAGEMENT
    };

    enum OUT
    {
      SLIDECONTROL,
      MODEMANAGEMENT,
      HMICONTROL,
      MOTORCONTROL
    };


    enum GET {X};

    std::string Commentaire ;
};

错误是:redeclaration Of MODEMANAGEMENT。我不明白为什么,因为他们有两个不同的枚举。我应该为每个枚举创建不同的单独文件吗?

1 个答案:

答案 0 :(得分:3)

从C ++ 11开始,您可以使用enum class代替enum来解决此问题。

如果由于某种原因你不能使用C ++ 11,你应该为你的值加上这样的前缀:

enum IN
{
  IN_SYSTEMMONITOR,
  IN_MODEMANAGEMENT
};

enum OUT
{
  OUT_SLIDECONTROL,
  OUT_MODEMANAGEMENT,
  OUT_HMICONTROL,
  OUT_MOTORCONTROL
};

或者它们不能放在同一个结构中,因此您必须将声明移动到不同的命名空间。 (编辑:或如下所述的不同类别/结构。)