成员函数做 线程函数, 认不出 参数 ,“(nil)” ?

shouso888 2014-03-08 02:10:10
void* SomeClass::NoneStaticThreadFunc(void* param)
{
printf("param=[%p],this=[%p] \n", param, this);
return NULL;
}

void SomeClass::InvokNoneStaticThreadFunc()
{
pthread_t tid;
pthread_create(&tid, NULL, (void* (*) (void*))&SomeClass::NoneStaticThreadFunc, this);
}

打印结果: param=[(nil)], this=[0x7fff44cae060].

为什么打印 param 是 “(nil)” ???
...全文
169 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
heartlesstoanyone 2014-03-10
  • 打赏
  • 举报
回复
对啊,你的静态方法里面怎么能访问"this"指针?
布鲁克斯南南 2014-03-10
  • 打赏
  • 举报
回复
引用 1 楼 shouso888 的回复:
。。怎么都没人回答的,都休假了嘛大伙
你把
SomeClass* arg =(SomeClass*)param  打印arg就可以了 param 没有转换之前是void * 所以打印出来的是null
shouso888 2014-03-10
  • 打赏
  • 举报
回复
引用 2 楼 li875590079 的回复:
你把
SomeClass* arg =(SomeClass*)param  打印arg就可以了 param 没有转换之前是void * 所以打印出来的是null
试过了。 还是打印的 nil ! 应该不是这个问题, %p 同样可以打印 void* 类型的值。
shouso888 2014-03-08
  • 打赏
  • 举报
回复
。。怎么都没人回答的,都休假了嘛大伙

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧