Hi,
 
I want to use boost::thread to create threads that are member functions within a class. In all the examples I have seen, the thread function is defined globally.
 
I explain it with code. The following test code works:
 
//  code 1: example program that works  -----------------------------------------------
#include <boost/thread/thread.hpp>
#include <iostream>
using namespace std;
 
void testing()
{
    cout << "I'm a thread." << endl;
}
 
int main(int argc, char* argv[])
{
     // start a new thread that calls the "testing" function
     boost::thread my_thread(&testing);
     // wait for the thread to finish
     my_thread.join();
 
    return 0;
}
 
// -------------------------------------------------------------------------------------------
 
Now, I want to create something like:
 
// code 2: thread created from member class (code yields compiler errors)
 
#include <boost/thread/thread.hpp>
#include <iostream>
using namespace std;
 
class TestThread
{
public:
   void testing(void);
   void CreateThread(void);
};
 
void TestThread::CreateThread()
{
    // start a new thread that calls the "testing" function
    boost::thread my_thread(&testing);
    // wait for the thread to finish
    my_thread.join();
}
 
int main(int argc, char* argv[])
{
    TestThread t;
    t.CreateThread();
 
    return 0;   
}
 
When compiling the code above (code 2), I get the following compilation error:
ISO C++ forbids taking the address of an unqualified or paranthesized non-static member function to form a pointer to member function. Say &TestThread::testing.
 
My question is: How do I create threads from within a C++ class member function?
 
Thanks a lot for your help.
 
/ Mogr