繁体   English   中英

转换void指针(在struct中工作时)

[英]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

->运算符的右操作数必须是结构(或联合)成员的名称; 它不能是演员表达。

currentlinked_list类型的linked_list (推测)。

current->datavoid*类型的表达式。

要将void*表达式转换为edge*表达式,您需要将强制转换应用于表达式,而不是成员名称,因此:

(edge*)current->dataedge*的表达式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM