Boost logo

Boost Users :

Subject: Re: [Boost-users] Threads and virtual functions
From: Igor R (boost.lists_at_[hidden])
Date: 2011-07-07 02:52:53


> class A{
> public:
>     A();
>     ~A();
>     void Run();
>     void ThreadA();
>     virtual void HandleSomething();
> };
>
> void A::HandleSomething()
> {
>
> }
>
> void A::ThreadA()
> {
>     if(condition)
>     {
>         HandleSomething();
>     }
> }
>
> void A::Run()
> {
>     boost::thread thread(&A::ThreadA,this);
> }
>
> This is my base class. As you can see the thread calls the virtual function
> when the condition becomes true. I use the virtual function in my derived
> class so everytime the condition becomes true the function HandleSomething()
> should do something. So far, so good but when I try to change some variables
> in the derived class the program crashes without any warning or error
> message. I use the latest Ubuntu version with GCC 4.5.3 and boost 1.46.1.

Do you call the virtual function in a constructor?


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