gpt4 book ai didi

C++ pthread 成员函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:23:03 28 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
pthread Function from a Class

由于 pthread_create 行,我有这段代码无法编译:

void* gtk_functor::_threaded_run(void* win)
{
Gtk::Window* w = static_cast<Gtk::Window*>(win);
Gtk::Main::run(*w);
delete w;
}

void gtk_functor::operator ()(Gtk::Window& win, bool threaded)
{
if (threaded)
{
pthread_t t_num;
pthread_create(&t_num, NULL, (void* (*)(void*))&gtk_functor::_threaded_run, static_cast<void*>(&win));
}
else
{
Gtk::Main::run(win);
}
}

这个 gcc 行:

g++ -o main 'pkg-config --cflags --libs sqlite3 gtkmm-3.0' -lpthread main.cpp

最后是否使用此输出进行编译:

code/ui.cpp: In member function 'void ui::gtk_functor::operator()(Gtk::Window&, bool)':
code/ui.cpp:45:65: warning: converting from 'void* (ui::gtk_functor::*)(void*)' to 'void* (*)(void*)' [-Wpmf-conversions]

显然代码无法正常工作,当 if (threaded) 被引发时,我得到了 sementation fault

我知道它的强制转换,但我不知道将成员函数传递给 pthread_create 的正确形式。有什么建议吗?

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