gpt4 book ai didi

c++ - 使用 void * 传递变量

转载 作者:行者123 更新时间:2023-11-30 01:55:22 25 4
gpt4 key购买 nike

我正在编写一个界面(使用 FLTK 但这并不重要)。我做了一个按钮和它的回调函数。在此回调函数中,我需要在回调函数外部的变量中使用数据(代码中为 Myclass mc)。代码如下所示(我没有粘贴不必要的部分):

class Myclass
{
...
}

void button_callback( Fl_Widget* o, void* data)
{
Fl_Button* button=(Fl_Button*)o;
Myclass *a;
a=data;
a->MyMemberFunction();
}

int main()
{
Myclass mc;
...
Fl_Button button( 10, 150, 70, 30, "A button" );
button.callback( button_callback,&mc );
...
}

但是在“a=data;”的地方我收到一个错误提示 void * cannot be assigned to Myclass *,我该怎么办?

非常感谢!

最佳答案

假设通过void*传入的数据是指向Myclass的指针,需要从中添加一个reinterpret_cast >void*,像这样:

Myclass *a = reinterpret_cast<Myclass*>(data);

这会告诉编译器你确定data是指向Myclass的指针,让你调用MyMemberFunction()那个指针。

关于c++ - 使用 void * 传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20793351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com