[英]Casting void pointer (while working in struct)
我对整个C编程非常新(几周),所以请放轻松我;-)
项目详情:我目前正致力于制定火车旅行计划系统,使用特定的火车计划找到到达特定目的地的最短路线。 这样就完成了图形,二元堆的排序,然后是dijkstra algortihm。 因此,混乱的结构(抱歉!认为最好熟悉它们)。
我的问题:我构建了一个链表,在结构中将数据作为void(使其更通用于重用),但是当我想在使用结构时转换数据时,我得到语法错误。
结构:
typedef struct linked_list{
void *data;
struct linked_list *next;
struct linked_list *previous;
} linked_list;
我可能会发出明显的错误:
if(current->((edge*)data)->to->distance > ...
如果我将数据类型更改为我的结构中的边缘(而不是尝试此特技),这完全正常,但在这种情况下,转换显然不起作用。
如果需要更多详细信息,请告知我们。
((edge*)current->data)->to->distance
->
运算符的右操作数必须是结构(或联合)成员的名称; 它不能是演员表达。
current
是linked_list
类型的linked_list
(推测)。
current->data
是void*
类型的表达式。
要将void*
表达式转换为edge*
表达式,您需要将强制转换应用于表达式,而不是成员名称,因此:
(edge*)current->data
是edge*
的表达式
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.