Чтобы вы могли вызывать виртуальные методы, простой реализа- ции таблицы виртуальных методов недостаточно. Каждый объект с виртуальными методами включает в свои структуры данных указатель на таблицу виртуальных методов. Когда вы создаете экземпляр объ- екта этот указатель нужно инициализировать. Для этой цели можно использовать директиву TBLINST.
Инициализируйте указатель таблицы виртуальных методов в ме- тоде init следующим образом:
; Инициализация объекта связанного списка ; Это метод "init" ; Этот метод должен быть статическим. list_init PROC PASCAL FAR ARG @@list:dword USES dx,bx lds bx,@@list ; -- По адресу ds:bx инициализировать таблицу виртуаль- ; ных методов. TBLINIT ds:bx ; -- Инициализировать данные объекта ;; << Здесь инициализируются все данные объекта >> ret ENDP
Примечание: Заметим, что метод init должен быть стати- ческим, так как виртуальный метод экземпляра объекта вы вы- зывать не можете, пока не инициализирован указатель таблицы виртуальных методов.