All pastes #898647 Raw Edit

Anonymous

public text v1 · immutable
·published 2008-02-10 14:22 UTC
rendered paste body
mytest.cpp:

#include "common.h"

class A {
    public:
        A() {}
        ~A() {}
        virtual void worker() {
                std::cout << "I am A worker" << std::endl;
        }
        virtual A *factory() { 
                return new A;
        }
        virtual void operator()() {
                std::cout << "Calling A operator()" << std::endl;
                worker();
        }
        void threadcontroller() {
                boost::thread_group thre;
                for(;;) {
                        A *mea = factory();
                        mea->worker();
                        thre.create_thread(*mea);
                        exit(0);
                }
        }
};

class B: public A {
    public:
        B() {}
        ~B() {}
        virtual void worker() {
                std::cout << "I am B worker" << std::endl;
        }
        virtual void operator()() {
                std::cout << "Calling B operator()" << std::endl;
                worker();
        }
        B *factory() { 
                return new B;
        }
};

int main()
{
        B meb;

        meb.worker();
        meb.threadcontroller();
}


output:
$ ./mytest 
I am B worker
I am B worker
Calling A operator()
I am A worker