无法转换为指针类型:C错误

yod*_*dha 1 c c++

我有一个我需要打电话的功能

int (*trytoprint_f)(int val, void *param);
Run Code Online (Sandbox Code Playgroud)

但是当我调用这个函数时,就把它放了

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

client->trytoprint(age, (void *)name));
Run Code Online (Sandbox Code Playgroud)

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

我知道解决方案基本上使用str_dup_ptr下面的函数(name,ulr-> imsi,mem); 它的工作原理(我从框架中获得了这个功能).

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

任何人都可以帮助我理解为什么会发生这种错误?

谢谢

the*_*olm 5

您必须将指向结构的指针转换为void*而不是结构本身.试试这种方式

client->trytoprint(age, (void *) &name));
Run Code Online (Sandbox Code Playgroud)

  • 如果你只是强制转换为`void*`,那么你本质上是试图在(str ++)中调用`str'类中的`operator void*()`函数(据我所知,无论如何).可能不是你想要做的; 因为你想传递一个void*_pointer_,你需要首先获取地址(获取类型为`str*`的指针),然后将其转换为类型为`void*`的指针. (2认同)