C++ 非法强制转换:来自struct';套接字日志数据';至';无符号整数';数据
我有一个函数C++ 非法强制转换:来自struct';套接字日志数据';至';无符号整数';数据,c++,struct,casting,parameter-passing,typecasting-operator,C++,Struct,Casting,Parameter Passing,Typecasting Operator,我有一个函数logEthernetConnection(),它接受一个整数作为参数。 然而,需求建议我向它传递一个结构。 我在传递时键入了结构,但我得到了标题中提到的错误:- error (dplus:1061): illegal cast: from 'socket_log_data' to 'unsigned int' 下面是代码片段:- typedef struct fields { UINT16 loss_reason : 1; UINT16 unused : 15;
logEthernetConnection()
,它接受一个整数作为参数。
然而,需求建议我向它传递一个结构。
我在传递时键入了结构,但我得到了标题中提到的错误:-
error (dplus:1061): illegal cast: from 'socket_log_data' to 'unsigned int'
下面是代码片段:-
typedef struct fields
{
UINT16 loss_reason : 1;
UINT16 unused : 15;
} FIELDS;
typedef union fields_union
{
UINT16 all_fields;
FIELDS ref_fields;
fields_union() : all_fields(0), ref_fields() {}
} FIELDS_UNION;
typedef struct socket_log_data
{
FIELDS_UNION ref_fields_union;
UINT16 socket_number;
socket_log_data() : socket_number(0), ref_fields_union() {}
} SOCKET_LOG_DATA;
int logEthernetConnection(UINT32 data)
{
return data;
}
void main()
{
UINT32 data = logEthernetConnection((UINT32)socket_log_data);
getchar();
}
我该如何解决这个问题
相关查询在此发布:-
不能将结构传递给需要整数的函数!该函数将如何处理它(假设您成功地将其通过肮脏的黑客攻击)
函数将如何处理它?您试图转换的结构的大小大于UINT32。此外,不能像这样将结构强制转换为int(无论大小)。我猜您要做的是强制转换结构socket\u log\u数据的UINT16成员,如下所示:
void main()
{
socket_log_data my_var_struct;
// Fill the my_var_struct
UINT32 data = logEthernetConnection( (UINT32) my_var_struct.socket_number);
getchar();
}
希望这有帮助 您应该从所有结构中删除
typedef
s。这是一个古老的用法,从C,它不应该在C++中使用。