我对整个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 > ...
如果我将数据类型更改为我的结构中的边缘(而不是尝试此特技),则此工作完全正常,但在这种情况下转换显然不起作用。
如果需要更多详细信息,请告知我们。
答案 0 :(得分:3)
((edge*)current->data)->to->distance
答案 1 :(得分:0)
->
运算符的右操作数必须是结构(或联合)成员的名称;它不能是演员表达。
current
是linked_list
类型的表达式(推测)。
current->data
是void*
类型的表达式。
要将void*
表达式转换为edge*
表达式,您需要将强制转换应用于表达式,而不是成员名称,因此:
(edge*)current->data
是edge*