sách gpt4 ai đã đi

c++ - 无法将 ‘void* (Network::*)(void*)’ 转换为 ‘void* (*)(void*)’

In lại 作者:塔克拉玛干 更新时间:2023-11-03 01:24:14 28 4
mua khóa gpt4 Nike

我是一名初级 C++ 程序员,我正在 Linux 机器上编程。

我遇到了这个错误:

cannot convert ‘void* (Network::*)(void*)’ to ‘void* (*)(void*)’ for argument ‘3’ to ‘int pthread_create(pthread_t*, const pthread_attr_t*, void* (*)(void*), void*)

它来自这条线:

pthread_create(&thread_id,0,&Network::SocketHandler, (void*)csock );

我要调用的函数是:

void* Network::SocketHandler(void* lp)

我在头文件中将这两个函数都声明为私有(private)的。

你们有没有看到我做错了什么?

1 Câu trả lời

您正在使用一个成员函数指针,而应该是一个常规的函数指针. 成员函数 有一个隐含的额外参数:cái này. pthread_create 没有考虑到这一点。

您必须使函数tĩnh 才能与pthread_create 一起使用。然后,您可以使用 void* 参数传递原本是 cái này 的指针。

就个人而言,我会放弃 pthreads,转而使用 C++11 std::thread hoặc boost::thread 如果您无权访问 C++11 实现。

关于c++ - 无法将 ‘void* (Network::*)(void*)’ 转换为 ‘void* (*)(void*)’,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14287942/

28 4 0
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com