免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4276 | 回复: 5
打印 上一主题 下一主题

[函数] 提问:pthread_create()中的第3个参数(就是那个函数指针)能否是类的方法? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-25 21:32 |只看该作者 |倒序浏览
我定义了一个如下的类:

class threadclass
{
        private:
                pthread_t       thread_id;
                void  *  (*start_routine)(void *);

        public:
                threadclass();
                ~threadclass();

                void * sample(void *);
                void start();
                void stop();


};



其中我在程序中有如下的语句:
start_routine = threadclass::sample;


结果用g++编译通不过,提示
no matches converting function `sample' to type `void*(*)(void*)'


为什么会这样?

论坛徽章:
0
2 [报告]
发表于 2006-03-25 21:35 |只看该作者
没有办法,一个是类的成员函数,一个是普通函数,没有办法这么赋值

论坛徽章:
0
3 [报告]
发表于 2006-03-26 12:58 |只看该作者
你把成员函数定义为static类型就可以作为
pthread_create的参数使用了.

论坛徽章:
0
4 [报告]
发表于 2006-03-26 20:25 |只看该作者
L00K HeRe

http://www.koders.com/cpp/fid981 ... C.aspx?s=ptypes#L77

PTypes 的 thread 类实现方法,通过静态函数反相调用类成员函数。

论坛徽章:
0
5 [报告]
发表于 2006-03-26 20:36 |只看该作者
static不能访问类中的非static成员,这时候pthread_create的最后一个指针参数就有用了.

原帖由 unicorns 于 2006-3-26 12:58 发表
你把成员函数定义为static类型就可以作为
pthread_create的参数使用了.

论坛徽章:
0
6 [报告]
发表于 2006-03-26 20:45 |只看该作者
嗯,看到了,this的运用啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP