обхождане на SET с обекти
Защо при обхождане на сет с обекти с итератор ( set<someObject>setData; )
for (auto it = setData.begin(); it != setData.end(); it++) {
if ((*it). ) / или if ( it -> не разпознава и не позволява да се изведат полетата на обекта, които са дефинирани в класа:
дефинирано поле в класа:
string getName() {
return this->name;
}
В кода предефенирания оператор беше' >', а не '<'. Смени го както след ключовата дума operator, така и при return.
Когато приемаш *it - дереференцирания итератор не приемаш самия обект, за да използваш самия обект и за да можеш да викаш методите в класа просто си направи временен обект който приема дереференцирания итератор и работи върху обекта, казано иначе.
Visitor currVisitor = *it; - така работиш върху обект, който е същия, като текущия и можеш да ползваш същите методи със същия резултат. Мисля, че след края на блока код в който е деклариран този обект ще се освободи от паметта.
След като промених двете неща в програмата ти тръгна без проблем, но ми изглежда, че не работи добре за command == "name".
Не съм сигурен пробвай и провери дали ще стане така. Също така не съм сигурен, че това е най-добрия начин за да се подкара кода, но така тръгна.
Поздрави.
Много благодаря! Успех утре!!