c++ - 无法转换为指针类型: C error

标签 c++ c

我有一个需要调用的函数

int (*trytoprint_f)(int val, void *param);

但是当我调用这个函数并放入

str name = {"jack", 4};
int age = 2;

client->trytoprint(age, (void *)name));

它给了我一个错误“无法转换为指针类型:C 错误”

我知道解决方案基本上是使用下面的函数 str_dup_ptr(名称, ulr->imsi, mem);它有效(我从框架中获得了这个功能)。

无论如何,我只是感到困惑。所以问题是,如果函数接受 (void *param),并且我声明了 str 类型的 name 变量,那么当我将这个“name”变量转换为 void 指针时,它会返回这个错误吗?

谁能帮我理解为什么会发生这个错误?

谢谢

最佳答案

您必须将指向结构的指针转换为 void* 而不是结构本身。试试这个方法

client->trytoprint(age, (void *) &name));

关于c++ - 无法转换为指针类型: C error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7507117/

相关文章:

c++ - 如何简化执行模板函数的 switch 语句?

c++ - 编译器是否默认生成构造函数constexpr?

c++ - 删除标点符号和空格的问题

c - 通过引用传递结构

c - VESA/VGA 早期内核控制台中字符结构的正确形式是什么?

c - 为什么 GNU configure 将 SIZEOF_INT 等的宏定义为特定的整数值?

c++ - 字符串操作 C++ 在字符串后存储整数

c++ - 如何从基础类中获得顶级类

c++ - 给定一个整数数组,找到第一个唯一的整数

c - C 中的 While 循环 - 读取直到标记变体