[C++/STL] modyfikacja skladnikow listy klas

0

Witam,
chcę stworzyć coś na wzór bazy danych, wszystko obudowane w klasy, jednak wciąż napotykam na problemy, klasa user działa bez zarzutu jak tworze 2 klase w której jest lista pojawiaja się problemy...

class user
{
    int id;
    std::string nick;
public:
    user();
    user(int, std::string);
    void set_id(int);
    void set_nick(std::string);
    int get_id();
    std::string get_nick();
};
user::user()
{
    id=0;
    nick="serwer";
}
user::user(int f_id, std::string f_nick)
{
    id=f_id;
    nick=f_nick;
}
void user::set_id(int f_id)
{
    id=f_id;
}
void user::set_nick(std::string f_nick)
{
    nick=f_nick;
}
int user::get_id()
{
    return id;
}
std::string user::get_nick()
{
    return nick;
}
//=================================================
class database
{
    std::list<user> base;
    void add_usr(int, std::string);
};
void database::add_usr(int f_id, std::string f_nick)
{
    base.push_back(f_id, f_nick);
} 

ogólnie nie wiem jak dostać się do składników listy klas, przez iteratory?
np:

 
int main()
{

      list<user> baza;
      list<user>::iterator p_baza = baza.begin();
      baza.push_back(1, "dominicuss");  //tu juz pojawia się problem
      cout << p_baza.get_id();          // nie mam pojęcia jak dostac sie do konkretnej pozycji listy
}

Proszę o wyrozumiałość
Pozdrawiam

0

p_baza->get_id(); iteratory obsługuje się (prawie) identycznie jak wskaźniki.

0

chodzi o to ze gdy tworzę liste obiektów klasy

list<user> baza

nie powstaje żaden obiekt, wiec iterator pokazuje w kosmos...
a gdy chce dodać element do listy za pomocą

push_back()

kompilator strajkuje że klasa nie posiada metody push_back()
error:
no matching function for call to 'std::list<user>::push_back(int, std::string)'

0

Bo nie ma takiej metody, przeczytaj dokładnie.

std::list<user>::push_back(int, std::string) 

Lista obiektów przyjmuje obiekt, więc najprawdopodobniej:

std::list<Obiekt>::push_back(const Obiekt& obiekt) 

Czyli na przykład:

lista.push_back(Obiekt(1, "Ultraman")); 

Zresztą, dokumentacja pokazuje:
http://www.cplusplus.com/reference/stl/list/push_back/

void push_back ( const T& x );

1 użytkowników online, w tym zalogowanych: 0, gości: 1