Относительно Перечисление в C ++ ATL относительно легко использовать, используя предложения CComEnum / CComEnumOnSTL .
Проблема с этими классами заключается в том, что перед итерацией необходимо хранить данные в массиве или списке.Это невозможно для нас, поскольку получение всех данных для списков занимает достаточно много времени, и поэтому мы не хотим получать больше, чем необходимо, из базовой системы.Более того, потребитель нашего COM-интерфейса обычно не выполняет итерацию полных списков.
Идея состоит в том, что реализация интерфейса IEnumXXXX имеет указатель для текущей записи в списке.Если потребитель хочет получить следующую запись в списке, он выполняет поиск следующей записи и возвращает содержимое этой записи (да, базовая система может быть улучшена на многих уровнях, но теперь это так, как есть)
Так что мой вопрос, есть ли какой-нибудь хороший способ реализовать IEnumXXXX с использованием ATL, где полный массив неизвестен с начала итерации.Или я должен реализовать IEnumXXXX для каждого обрабатываемого списка (довольно много списков)