Mirage писал(а):Stargazer: Вы верите в телепатию? Нужен весь код. От объявления переменных до финализации.
Наверное, стоит сперва объяснить, чего же я хочу добиться, используя интерфейсы.
Все мои классы имеют общего прародителя. Это архитектурное решение связано с тем, что
все объекты (т.е., экземпляры классов) используют общий механизм загрузки.
Но вместе с тем многие классы имеют, естественно, различную специализацию.
В ходе разработки встаёт вопрос - как объединить возможности двух разных классов, имеющих одного прародителя (агрегирование тут не подходит, т.к. нужен полиморфизм). А поскольку FPC не поддерживает множественное наследование, то единственный выход в этом положении - интерфейсы.
Я, кажется, начинаю понимать в чём проблема (кстати, без телепатии тут точно не обошлось!) - у меня все объекты создаются и разрушаются автоматически. Сделав их наследниками TInterfacedObject, я не учёл того, что код разрушения объектов работает по-прежнему. Вполне возможно, что в какой-то момент у меня объект автоматически уничтожается, а потом происходит попытка вызвать деструктор несуществующего объекта.
Видимо, мне нужно заставить объекты жить, вне зависимости от того - есть на них ссылки или нет.