Void *指向结构的指针

时间:2014-08-08 09:22:51

标签: c++ c struct void-pointers

我正在实施超时。所以我宣布了一个超时结构

typedef struct{
    unsigned long * Task;
    unsigned long Timeout;
    unsigned long Offset;
    DATA * Next;
    DATA * Previous;    
} TIMEOUT;

我把它初始化为:

TIMEOUT Timout = {NULL ,30,0,NULL,NULL,NULL};

我声明了另一个结构DATA Contents;

typedef struct{
    char CallBack;
    void * Data;
}DATA;

但是当我Contents.Data = Timout;时,它会给我以下错误:

CA850 error E2524: illegal type combination for '=' (void *, __faked63)

请帮助:)

2 个答案:

答案 0 :(得分:1)

你需要一个指针。表达式Contents.Data = Timeout;尝试将类型TIMEOUT的值分配给类型为void*的变量。使用&Timeout获取指针:

Contents.Data = &Timeout;

答案 1 :(得分:0)

您不能将结构本身分配给void *但是它的地址也是如此,请使用

Contents.Data = &Timeout;