Zapisywanie klas dynamicznie

0

Witam. Utowrzyłem klasę record

 class record {
public: 
    string imie;
    int punkty;
    int poziom;
    record (string imie, int punkty, int poziom):imie(imie),punkty(punkty),poziom(poziom){};
    record getRecord(){return record};
};

Następnie w funkcji pobieram dane z pliku tekstowego i każdą linijkę chcę zapisać do osobnego obiektu tej klasy. Obiektów tych łącznie powinno być 10, dlatego dynamicznie utworzyłem 10 obiektów. ( Tu też się pojawia mój pierwszy problem, ponieważ nie wiem jak utworzyć dynamicznie 10 obiektów, które będą przyjmowały po 3 argumenty).

record * klasaWynikow = 0;
    klasaWynikow = new record[10]; 

I problem pojawia się kiedy w pętli chcę zapisać dane do obiektów. Posiadam 1 stringa oraz 2 inty i nie mam pojęcia jak w pętli odnieść się do i-tego obiektu wraz z konstruktorem z 3 argumentami.
Mam taką pętle

while(wyniki>>imie>>pkt>>lvl) 
    {
       klasaWynikow[i](imie,pkt,lvl); // ???
       i++;
    } 

Będę wdzięczny za każdą pomoc.

1
list<record> klasaWynikow;
while(wyniki>>imie>>pkt>>lvl) klasaWynikow.push_back(record(imie,pkt,lvl));
0

Dzięki wielkie, nie pomyślałem, ze mogę to w liście zrobić. A jakbym chciał teraz wyświetlić zawartosć listy w pętli to jak mogę się odnieść do poszczególnych elementów klasy?

 for(list<record>::iterator x=klasaWynikow.begin(); x != klasaWynikow.end(); x++)
cout << *x.imie // ???
cout << klasaWynikow.imie //???
1
for(list<record>::iterator i=klasaWynikow.begin();i!=klasaWynikow.end();++i)  cout<<i->imie<<endl;
0
Grafer napisał(a):

Dzięki wielkie, nie pomyślałem, ze mogę to w liście zrobić. A jakbym chciał teraz wyświetlić zawartosć listy w pętli to jak mogę się odnieść do poszczególnych elementów klasy?

for(list<record>::iterator x=klasaWynikow.begin(); x != klasaWynikow.end(); x++)
cout << *x.imie // ???
cout << klasaWynikow.imie //???

jak nie modyfikujesz zawartości kontenera to użyj ranged for loop

for(auto const& element : klasaWynikow)
{
      std::cout << element.imie;
}

jak chcesz użyć iteratora i nie modyfikować kontenera to ustaw też iterator end fixed

for(auto it = std::begin(klasaWynikow), itend = std::end(klasaWynikow) ; it != itend ; ++it)
{
      std::cout << it->imie;
}

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