C ++ pthread_create参数

时间:2016-01-09 02:27:53

标签: c++

我以前使用 (\n -> eval y >>= (\m -> safediv n m)) n 函数作为void*的第三个参数,这就是它的样子:

pthread_create

这很有用。但是我对代码进行了一些更改,并且需要函数void* nameChange(void*){ ... } ... pthread_t id; pthread_create(&id, NULL, nameChange, NULL); 成为我的类nameChange的成员。这是现在唯一的区别:

MainWindow

现在,我将void* MainWindow::nameChange(void*) 作为参数时出错。这就是它的内容:

nameChange

我在这里做错了什么?我对线程很陌生,所以感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

C函数和C ++成员函数之间的区别在于C函数使用 cdecl 调用约定,而成员函数使用 thiscall 调用约定。您无法直接调用成员函数。 成员函数指针与函数指针的类型不同

也许这是一个解决方法

void* callback(void*)
{
    MainWindow instance;
    instance.nameChange();
}

pthread_create(&id, NULL, callback, NULL);