【发布时间】:2016-02-22 14:39:14
【问题描述】:
我有一个函数logEthernetConnection(),它接受一个整数作为参数。
但是,要求建议我将结构传递给它。
我在传递时对结构进行了类型转换,但我得到了标题中提到的错误:-
error (dplus:1061): illegal cast: from 'socket_log_data' to 'unsigned int'
这里是代码 sn-p:-
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();
}
我应该如何解决这个问题?
此处发布的相关查询:- Error: illegal cast: from 'int' to 'union'
【问题讨论】:
-
您应该从所有结构中删除
typedefs。这是 C 保留下来的古老用法,不应该在 C++ 中使用。
标签: c++ struct casting parameter-passing typecasting-operator