From: Tim Laplaca (tlaplaca_at_[hidden])
Date: 2004-11-22 10:50:17


I am very new to boost, I apologize if this has been asked before. I
searched the mailing list archive but could not find an answer to my
question.

 

 

I was successful creating threads with functions that are not members of
objects, but when I try to create threads with a pointer to an object
member I get compilation errors (MS Visual Studio .NET).

 

Examples:

 

class objclass;

typedef void (objclass::*pmf)(); // ptr to member func

class objclass

{

      public:

            objclass() : thread_id (0) { p=&objclass::dowork; }

            inline setthreadid(int x) {thread_id = x;}

            inline setvaltwo(std::string str) {valtwo = str;}

            void dowork();

            pmf p; // pointer to dowork member function

 

            int getthreadid() {return thread_id;}

            std::string getvaltwo() {return valtwo;}

 

      private:

            int thread_id;

            std::string valtwo;

 

};

 

void objclass::dowork()

{

}

 

 

(In the main...)

 

boost::thread_group thrds;

objclass * objthread;

 

objthread = new objclass;

thrds.create_thread( (objthread->p) );

 

I get the following error:

c:\Boost\include\boost-1_31\boost\function\function_template.hpp(427):
error C2664: 'void
boost::function0<R>::assign_to<Functor>(FunctionPtr,boost::detail::funct
ion::function_ptr_tag)' : cannot convert parameter 2 from
'boost::detail::function::member_ptr_tag' to
'boost::detail::function::function_ptr_tag'

        with

        [

            R=void,

            Functor=pmf,

            FunctionPtr=pmf

        ]

 

 

Is there a way around this problem, or is it simply not possible to make
threads from object members with boost?

 

Thanks,

Tim