我的问题并不是很难,但我无法在网上找到适合我的问题的答案。
我定义了一个包含结构的.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
。我不明白为什么,因为他们有两个不同的枚举。我应该为每个枚举创建不同的单独文件吗?
答案 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
};
或者它们不能放在同一个结构中,因此您必须将声明移动到不同的命名空间。 (编辑:或如下所述的不同类别/结构。)