[BUG] BCB5, шаблоны, virtual !!!
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 22.04.04 08:07
Оценка: 53 (3) +1
#Имя: FAQ.tools.bcb5.virtualtemplates
Описание.
При использовании наследования, шаблонов и виртуальных методов компилятор может сгенерировать неправильные таблицы виртуальных функций!

Воспроизвести на маленьком проекте, к сожалению, до сих пор не удалось. На больших проектах это вылазило уже около 5 раз. За последний месяц — два раза. Причем один и тот же код в разных проектах может скомпилироваться правильно, а может — нет.

Диагноз
Судя по всему — компилятор, при генерации методов шаблона или потомка от шаблона, иногда не видит, что метод определен как виртуальный в базовом классе. И может в производном классе оставить реализацию базового класса. Одним из глухих случаев был вариант, когда эта базовая реализация была определена как чистая виртуальная функция. А может орать, что отсутствует реализация абстрактного метода, хотя в производном классе этот метод реализован.

Еще один случай, от которого я еще не отошел — указатель элемента VT, может указывать на совершенно другую функцию!

Лечение
В каждом производном классе нужно явно указывать virtual для всех переопределяемых методов.

Так что, поклонникам этого чудовища нужно держать себя обеими руками за ... короче не расслабляться

PS. Пишу сюда, а не в средства разработки, что бы прочитало как можно больше заинтересованного народа.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.