首页 > 解决方案 > C 将 MyType* 的函数转换为 void* 的函数

问题描述

我有这样的事情:

void vectorDestroyWithItems(Vector *vector, void (*destroyItemFunc)(void*));
void myTypeDestroy(MyType *obj);

我想这样称呼它:

vectorDestroyWithItems(vector, myTypeDestroy);

但我得到错误:

“void (*)(MyType MyType)”类型的参数与“void ( )(void *) ”类型的参数不兼容

为什么是非法的?

标签: c

解决方案


void (*destroyItemFunc)(void*)---> 函数指针,void*作为参数,不返回任何值。

但是,void myTypeDestroy(MyType *obj); 这里的论点是类型的MyType *,而不是类型的void*。这就是出错的原因。

解决方案:使用这个
void vectorDestroyWithItems(Vector *vector, void (*destroyItemFunc)(MyType *));


推荐阅读