我的问题并不难,但我无法在网络上找到我的问题的正确答案。
我定义了一个 .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/