Есть несколько вариантов исправления.
Нужно выбрать лучший
1. Просто перебираем в объекте-КОП всех наследников и ищем первого предка, что реализует универсальный интерфейс загрузки
2. Научить класс CComponentClass для самостоятельной реализации интерфейс загрузки.
Но в этом случае неясная ситуация с классом, у которого нет предков с реализованным интерфейсом загрузки. Единственный выход - это выдавать ошибку в методе интерфейса ldrInit
Зато в этом случае КОП может четко узнать о загрузке данных в его предка. Например, можно сделать 2 метода-события, вызываемых до загрузки и после загрузки.
3. Или пойти еще дальше и делегировать в сам объект КОП интерфейс загрузки, чтобы КОП мог также служить приемником выгрузки.
Например, если в КОП-е есть методы
Число РеализуемИнтерфейсЗагрузки() - или это лишний метод в этом случае?
Число СобытиеЗагрузки_НачалоЗагрузки(КолвоКолонок, КолвоСтрок)
Число СобытиеЗагрузки_ДобавитьКолонку(...)
Число СобытиеЗагрузки_ДобавитьДанные(Контейнер) - сюда передавать какой-нибудь контейнер, проще всего Вектор.
Число СобытиеЗагрузки_ОкончаниеЗагрузки(КолвоКолонок, КолвоСтрок)
Если же этих методов нет или РеализуемИнтерфейсЗагрузки возвращает 0, тогда используем п.2
Мне лично п.3 очень нравится