Re: Ничего не понимаю..
От: Aramis1  
Дата: 14.09.05 16:06
Оценка: -1 :)))
Здравствуйте, Аноним, Вы писали:

А>Почему не работает этот код???????


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