Почему не работает этот код???????
class Base
{
virtual void run() = 0;
static UINT WINAPI start( void *pObj );
void Start();
};
void Base::start(void * pObj)
{
Base * pBase = (Base*)pObj;
pObj->run(); // Вот на этом падает в run-time с сообщением 'pure virtual function called'
}
void Base::Start()
{
unsigned tid;
_beginthreadex(
NULL, // security attributes
0, // use default stack size
start, // thread function
this, // argument list
0, // start running
&tid // out: thread id
);
}
class Derived : public Base
{
void run(){}
};
// где-то в main():
Derived d;
d.Start();
Чего-то я совсем запутался — разве не должна вызваться Derived::run() ?