C ADT函数指针作为参数?
C ADT function pointer as parameter?
我在 ADT 中有一个函数:
Pgroup new_group(int size, void (*foo)(void *));
在我的另一个class中,我有这个功能可以发送:
void foo(Pstruc x);
x 是指向结构的指针。但是,当我尝试调用 new_group 时,我收到错误消息 "expected 'void (*)(void )' but argument is of type 'void ()(struct struc_ *)"。我是这样称呼它的:
Pgroup group = new_group(num, &foo);
有什么建议吗?
您可以将参数转换为正确的类型以消除诊断:
Pgroup group = new_group(num, (void (*)(void *)) foo);
请注意,这不可移植,因为 C 不保证不同指针之间的表示相同。最好的办法是使用在声明中匹配的类型。
您可以将原始函数从 void foo(Pstruc x);
重写为 void foo(void* x);
。
或转换其类型:(void(*)(void*))foo
.
我在 ADT 中有一个函数:
Pgroup new_group(int size, void (*foo)(void *));
在我的另一个class中,我有这个功能可以发送:
void foo(Pstruc x);
x 是指向结构的指针。但是,当我尝试调用 new_group 时,我收到错误消息 "expected 'void (*)(void )' but argument is of type 'void ()(struct struc_ *)"。我是这样称呼它的:
Pgroup group = new_group(num, &foo);
有什么建议吗?
您可以将参数转换为正确的类型以消除诊断:
Pgroup group = new_group(num, (void (*)(void *)) foo);
请注意,这不可移植,因为 C 不保证不同指针之间的表示相同。最好的办法是使用在声明中匹配的类型。
您可以将原始函数从 void foo(Pstruc x);
重写为 void foo(void* x);
。
或转换其类型:(void(*)(void*))foo
.