c - C 将 MyType* 的函数转换为 void* 的函数
问题描述
我有这样的事情:
void vectorDestroyWithItems(Vector *vector, void (*destroyItemFunc)(void*));
void myTypeDestroy(MyType *obj);
我想这样称呼它:
vectorDestroyWithItems(vector, myTypeDestroy);
但我得到错误:
“void (*)(MyType MyType)”类型的参数与“void ( )(void *) ”类型的参数不兼容
为什么是非法的?
解决方案
void (*destroyItemFunc)(void*)
---> 函数指针,void*
作为参数,不返回任何值。
但是,void myTypeDestroy(MyType *obj);
这里的论点是类型的MyType *
,而不是类型的void*
。这就是出错的原因。
解决方案:使用这个
void vectorDestroyWithItems(Vector *vector, void (*destroyItemFunc)(MyType *));
推荐阅读
- java - 地图
> 如何在java中动态获取值对 - laravel - 用于云应用程序的带有 Azure 活动目录的 SSO
- css - 具有自动行的无限宽度 css 网格
- r - 删除所有以R中特定字符串结尾的字符串的行 - grepl
- unity3d - Unity 中不同 Vuforia ImageTargets 的问题
- r - 两个柱的 scale_fill_manual 和 stat_summary 没有结果
- java - 通过将对象作为参数传递来在方法中使用对象
- c# - 在 .net core 2.2 中使用分页时,下拉列表不包含所选值
- ios - 在 SwiftUI 中显示一个空视图
- c# - C#如何过滤类型T的列表以仅返回新数据