I'm trying to have a class that when created, starts a background thread, similar to that below:
class Test
{
boost::thread thread_;
void Process()
{
...
}
public:
Test()
{
thread_ = boost::thread(Process);
}
}
I can't get it to compile, the error is "No matching function for call to boost::thread::thread(unresolved function type)". When I do this outside of a class it works fine. How can I get the function pointer to work?
You should initialize thread_
as:
Test()
: thread_( <initialization here, see below> )
{
}
Process
is a member non-static method of class Test
. You can either:
Process
as static.Process
on.If you declare Process
as static, the initializer should just be
&Test::Process
Otherwise, you can bind an instance of Test
using Boost.Bind:
boost::bind(&Test::Process, this)
The problem is that you want to initialize boost::thread with a pointer to a member function.
You would need:
Test()
:thread_(boost::bind(&Test::Process, this));
{
}
Also this question may be very helpful.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With