Ошибка в том, что ваш контейнер явно не содержит тип указателя в качестве типа элемента. Разыменование итератора дает ссылку на элемент в контейнере, например:
container::value_type &element = *iter;
Если тип элемента не является указателем, а тип не перегружает оператор ->
(например, smart как правило, указатели типов), тогда вы не можете использовать оператор ->
для доступа к элементам элемента:
element->getFrame(text); // error!
Вместо этого вам нужно использовать оператор .
:
element.getFrame(text); // OK!
Поместив его обратно в контекст, вы получите следующее:
std::cout << (*iter).getFrame(text); // OK!
Альтернативой является использование оператора ->
на самом итераторе, который разыменовывает итератор для вас, чтобы вы могли получить доступ к элементу. члены в одном выражении:
std::cout << iter->getFrame(text); // OK!