c++ - 结构中的枚举

标签 c++ qt struct enums

我的问题并不难,但我无法在网络上找到我的问题的正确答案。

我定义了一个 .h 文件,其中包含一个结构并在其中声明了一些枚举。我想在另一个 .cpp 文件中使用该结构。但编译返回错误。

这是我的代码variableStruct.h 文件:

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

错误是:重新声明 MODEMANAGEMENT。我不明白为什么,因为它们位于两个不同的枚举中。我应该为每个枚举创建不同的单独文件吗?

最佳答案

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

如果您由于某种原因无法使用 C++11,您应该为您的值添加前缀,如下所示:

enum IN
{
  IN_SYSTEMMONITOR,
  IN_MODEMANAGEMENT
};

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

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

关于c++ - 结构中的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24076799/

相关文章:

c++ - C++11 是否引入了不区分大小写的字符串比较算法?

c# - 没有 VS 2008 的 system.dllnotfoundexception

c++ - volatile 成员的访问方法

c++ - CONFIG += c++11(仍然)在 Linux 上不起作用

python - 调整窗口大小时,PyQt5 仅调整一个子部件的大小

c++ - 使用 boost 图创建结构

c++ - 添加到文件而不删除里面的内容

c# - 手绘IDE模块?

c++ - 使用 c 中结构的 malloc 对内存块进行索引

c - 将 strcmp 与数组一起使用