CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

怎样把pthread_create的线程函数当作类的成员函数编译通过?

楼主libad()2003-11-04 17:55:46 在 C/C++ / C++ 语言 提问

在SOLARIS   C++4。2下在一个类的成员里调用了一个线程,    
   
  int   baseClass::start()    
  {    
  ................    
  thr_id   =   pthread_create(&thread_id,   NULL,   thread_method,   NULL);    
  ........................    
  }    
   
  但必须把thread_method声明如下:    
  void   *thread_method(void   *arg)    
   
  如果声明为void   *   baseClass::thread_method(void   *arg)    
  就编译不过,我想把它作为成员函数,怎么办???不然破坏封装性   ,我还有子类需要  
  继承呢.  
   
  问题点数:20、回复次数:5Top

1 楼freelysay(haha)回复于 2003-11-06 00:23:18 得分 0

把baseClass作为一个functor实现,即重载其()操作符,不知能否符合你的要求。Top

2 楼libad()回复于 2003-11-06 13:57:58 得分 0

具体怎么做呀?我对C++不太熟Top

3 楼defstu(玛瑙石)回复于 2003-11-06 14:06:17 得分 20

把thread_method声明为static的就可以了……Top

4 楼libad()回复于 2003-11-06 15:18:16 得分 0

class   baseClass  
  {  
    static   void   *   thread_method(void   *   arg);  
  ...  
  };  
   
  static   void   *   thread_method(void   *   arg)  
  {  
      ...  
  }  
   
  int   baseClass::start()    
  {    
  ................    
  thr_id   =   pthread_create(&thread_id,   NULL,   thread_method,   this);    
  ........................    
  }    
   
  提示错误为:  
  ild:   (undefined   symbol)   static   baseClass::thread_method(void*)   --   referenced   in   the   text   segment   of   ../bin/baseClass.o  
   
   
   
   
  Top

5 楼zhukeke(zhukeke)回复于 2003-11-07 17:59:08 得分 0

class   baseClass  
  {  
    static   void   *   thread_method(void   *   arg);  
  ...  
  };  
   
  static   void   *   thread_method(void   *   arg)   //这里改为:  
                                                                          //void*   baseClass::thread_method(void*   arg)  
  {  
      ...  
  }  
   
  Top

相关问题

  • 在线程函数中调用CoInitializeEx编译出错
  • 关于线程创建函数的一个简单问题(编译未通过)
  • 线程函数 提问
  • 线程函数问题?
  • 我的一个线程函数必须做成static的,但我想在这个函数里调用其他的成员函数(非static的),这时编译通不过了。我该怎么做呢?
  • 我的一个线程函数必须做成static的,但我想在这个函数里调用其他的成员函数(非static的),这时编译通不过了。我该怎么做呢?
  • 构造函数编译错误
  • 关于函数SHGetFolderLocation的编译错误
  • CreateTimerQueueTimer函数为什么无法编译?
  • 关于inline函数编译问题

关键词

  • 函数
  • null
  • baseclass
  • 成员
  • thread
  • pthread
  • method
  • arg
  • create
  • 声明

得分解答快速导航

  • 帖主:libad
  • defstu

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo