枚举和结构调用
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;
这需要强制转换,但您 can/should(可读性、维护性..)可以通过这样做来避免它:
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$
我有一个名为 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;
这需要强制转换,但您 can/should(可读性、维护性..)可以通过这样做来避免它:
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$