gpt4 book ai didi

c++ - 将状态枚举的全局更改为函数中的 int 值

转载 作者:行者123 更新时间:2023-11-30 03:25:38 32 4
gpt4 key购买 nike

当我想在一个用整数替换它的函数中更改在程序开头声明的枚举值(全局)时,出现编译错误已有几个月了。

在我没有这个问题之前,但是将我的代码从迷你 arduino 卡切换到 ESP8266 时出现了问题..它没有相同的编译器??

下面的错误仍然阻塞并阻止我推进我的项目..我找不到解决方案:

ERROR : request for member 'state' in 'CYCLE_ARROSAGE', which is of non-class type '<anonymous enum>'

这里是问题的一个简化示例:

enum {
S, // SECURITE
N, // NUIT
J1_1, J1_2, J1_3, // Luminosité 1
J2_1, J2_2, J2_3, // Luminosité 2
J3_1, J3_2, J3_3, // Luminosité 3
} CYCLE_ARROSAGE; // SECURITE

void setup () {
CYCLE_ARROSAGE = N; // OK
}

void loop () {
CheckChangementCycleArrosage(J2_2);
}


void CheckChangementCycleArrosage(int NouveauCycle ){

if(CYCLE_ARROSAGE != NouveauCycle){

Serial.print("CYCLE CHECKE : ");
Serial.println(NouveauCycle); // -> 6

Serial.print("CYCLE CHECKE CAST: ");
Serial.println(String(NouveauCycle)); // -> 6

Serial.print("CYCLE ARROSAGE: ");
Serial.println(CYCLE_ARROSAGE); // -> 1

CYCLE_ARROSAGE = NouveauCycle; // -> ERROR
}
}

解决方案是什么?我不明白..

最佳答案

您不能将 int 隐式转换为匿名枚举。可能的解决方案是使用从 int 到的静态转换,但您应该将您的枚举声明为非匿名。

enum EnumName {S, // SECURITE
N, // NUIT
J1_1, J1_2, J1_3, // Luminosité 1
J2_1, J2_2, J2_3, // Luminosité 2
J3_1, J3_2, J3_3, // Luminosité 3
} CYCLE_ARROSAGE; // SECURITE

...

CYCLE_ARROSAGE = static_cast< EnumName >( NouveauCycle );

关于c++ - 将状态枚举的全局更改为函数中的 int 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48905062/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com