Ситуация:
на вход получаем блоки данных. По определенным признакам создаем указатель на объект нужного типа(все типы имеют общего родителя) для каждого блока и скалдывваем все указатели в один вектор родительского типа.
Затем перебираем вектор и взависимости от типа(параметр на классе) вызываем определенные методы(для каждого класса - свои) используя приведение поинтера к нужному типу.
Я влез в этот код и чистые указатели заменил на shared_ptr, т.к. были проблемы с памятью.
Остается вариант shared_ptr.get() и приведение к нужному типу чистого указателя. Без этого, понятное дело, shared_ptr будеи иметь тип родительского класса и про никакие чайлдовые методы он не слышал.
Подскажите, как бы улучшить сию кхм архитектуру?
Я думаю, что можно для парента определить виртуальный метод(или operator()) и для каждого чайлда прописать в нем, чтобы возвращал уже приведенный shared_ptr с нужным типом.
Но я не уверен, что это лучший вариант.
Может кто-то с подобным сталкивался? Проблема в том, что методы у чайлд классов разыне по имени и смыслу, полиморфизм не поможет
Ззаранее спасибо!