枚举和结构体调用
enum and struct call
我有一个名为Status.h的头文件,如下所示:
enum State {
OFFLINE = 0,
ONLINE = 1,
...
};
struct AgentStatus {
State statusInfo;
...
};
在我的。cpp文件中,我想初始化这个结构体,设置状态,并每10秒调用一次以查找状态。这是我的尝试:
AgentStatus s1;
s1.statusInfo = 0;
while(1){
std::cout<<"scanner status = "<<s1.statusInfo<<std::endl;
usleep(1000000);
}
我得到的错误是:
error: invalid conversion from ‘int’ to ‘State’ [fpermissive]
s1.statusInfo = 0;
如何将结构体设置为状态枚举中的其中一个值?
可以隐式地从State
转换为数字,但不能从数字转换为State
。
尝试
s1.statusInfo = OFFLINE;
或
s1.statusInfo = static_cast<State>(0);
您已经定义了:
enum State {
OFFLINE = 0,
ONLINE = 1,
...
};
但是你做了:
s1.statusInfo = 0;
需要强制转换的,你可以/应该(可读性,维护…)通过这样做来避免它:
s1.statusInfo = OFFLINE;
最小的例子:
enum State {
OFFLINE = 0,
ONLINE = 1,
};
struct AgentStatus {
State statusInfo;
};
int main() {
AgentStatus s1;
s1.statusInfo = OFFLINE;
return 0;
}
编译:C02QT2UBFVH6-lm:~ gsamaras$ g++ -Wall main.cpp
C02QT2UBFVH6-lm:~ gsamaras$
相关文章:
- 根据用户回答声明"Players"。用户选择玩家数量。播放器是结构体
- 结构体 S { int align; } 之间的区别;(struct 关键字后的名称)和 struct { int al
- C++ - 如何在结构向量中找到结构体一个成员的最大值?
- 包含 std::list 的结构体的 C++ 初始化
- 结构体和类的不同大小(),彼此具有相同的字段类型
- 如何使用结构体的向量数组?
- 如何使用结构体在C++中更改这些代码?
- 无法在 Mosquitto MQTT Broker 插件上访问结构体 mosquitto 的元素
- 我应该如何在C++中使用结构体解决输入失败的问题?
- 如何调用一个函数,它在一个单独的类中打印出一个结构体数组
- 在不知道结构体大小的情况下使用动态大小的结构体调用
- 调用返回结构体的c++ DLL函数
- P/在结构体中调用定义长度的C char*数组
- 从c++中的main调用类中的结构体
- 从c#调用c++函数-结构体,指针,函数指针
- 用结构体的所有实例调用函数
- 从结构体中调用c++成员函数指针
- 在c++中调用time会改变我的结构体tm
- 枚举和结构体调用
- c++只赋值函数调用返回的结构体的一部分