Здравствуйте, Аноним, Вы писали:
А>Почему не работает этот код???????
А>А>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() ?
клас Base получется абстрактным (т.к. в нем есть хотя-бы одна виртуальная ф-ция), поэтому все методы класа нужно переопределить и реализовать в производном класе