Boost logo

Boost Users :

From: Anthony Williams (anthony.ajw_at_[hidden])
Date: 2008-07-09 12:24:32


"Germain BARRET" <germain.barret_at_[hidden]> writes:

> Is their any probleme with boost::thread and inherited functions ?Here is an example of what doesn&#39;t work to me :Class A {public:makeWork() { runThat(); } ;protected:virtual runThat(void);
> } //AClass B : public A {public :init() { boost::thread(makeWork); }; //v1init() { boost::thread(boost::bind(B::makeWork)); }; //v2private :runThat(void) { printf("foo"); };}
> No way, once makeWork never run, or with boost::bind, boost::ref, boost::function... I have still errors (do I need to post the errors... ?)That why befor posting any error log, I ask if there are known problems with inheritage and boost::thread ?
> Of course I know how to use boost::thread and boost::bind, for example if I had this to B, it worksClass B : public A {...public :init2() { boost::thread(foo); };private :foo(void) { printf("foo"); };
> ...}So what ???In fact, in the real case, B inherit from another class one of my own invention : Singleton<CLASS> no need to explain what it does... maybe the "1 object only" is a problem for boost ?
> PS : the docs have very few complete examples, do you preview to extend it ? (usage of thread, bind, function, ref in the same example please) monolithic examples are OK to understand the principle, but not to understand complex usages...

If you wish to use a member function with boost::thread or
boost::bind, you need to specify which object to call the member
function on. e.g.

class A
{
  void thread_func();

  void run()
  {
      boost::thread t(&A::thread_func,this);
  }
};

If thread_func is virtual, this should also work if you pass in an
instance of a derived class.

Anthony

-- 
Anthony Williams            | Just Software Solutions Ltd
Custom Software Development | http://www.justsoftwaresolutions.co.uk
Registered in England, Company Number 5478976.
Registered Office: 15 Carrallack Mews, St Just, Cornwall, TR19 7UL

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net