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