Witam, mam jutro egz z c++ i muszę przeciążyć operator ++ do zadania. Mianowicie mam listę obiektów miast, klasę iterator i chcę aby operator ++ przechodził po miastach w liście. Mianowicie coś takiego
Iterator it;
it++;
napisałem tak, ale wywala błąd że "postfix 'void... must take 'int' as its argument'. Jaki int?!
#include <iostream>
#include <list>
#include <string>
using namespace std;
class Miasto
{
public:
string name;
int population;
};
class Iterator
{
protected:
int bylo;
public:
list<Miasto> lista;
Miasto aktualne;
Iterator(const list<Miasto>& lista);
operator bool()const;
void operator++(Iterator iter);
Miasto * get();
};
Iterator::Iterator(const list<Miasto>& lista)
{
this->lista = lista;
this->bylo = 0;
aktualne = this->lista.front();
}
void Iterator::operator++(Iterator iter)
{
int k = 0;
list<Miasto>::iterator it;
for(it = this->lista.begin(); it != this->lista.end(); it++)
{
if(k == this->bylo+1)
{
this->aktualne = *it;
}
k++;
}
}
Miasto * Iterator::get()
{
return &aktualne;
}
int main()
{
Miasto a;
Miasto b;
Miasto c;
a.name = "ZMC"; b.name = "TL"; c.name = "Krk";
list<Miasto>lista;
lista.push_back(a); lista.push_back(b); lista.push_back(c);
Iterator it(lista);
++it;
return 0;
}