mab Temat założony przez niniejszego użytkownika |
Odwołanie w vector do innej klasy » 2013-09-20 10:55:17 Witam mam następujący problem.
Stworzyłem vector typu Client: vector<Client>clientvector;
i vector typu int vector<int>airclientvector;
Konstruktor klasy Client:
Client::Client( int IDa, double starta, int gdziea, double when_whanta, double when_finisha, int is_herea, int bus_or_taxia, int prioryteta, int go_or_backa ) { int ID = IDa; double start = starta; int gdzie = gdziea; double when_whant = when_whanta; double when_finish = when_finisha; int is_here = is_herea; int bus_or_taxi = bus_or_taxia; int priorytet = prioryteta; int go_or_back = go_or_backa; }
void Symulation::newpassangers( events * x ) { double kiedy; kiedy = gen.wykladniczyS2( lamb ); schedule( new events( kiedy, 1, 0, 0 ) ); int prawdop; double genwhotelu; double dziw; double wynik; int ile; ile = airp.many_passangers(); for( int i = 0; i < ile; i++ ) { prawdop = gen.prawdopodobnypi(); dziw = gen.dziwny() * 1440; genwhotelu = gen.rownomiernywhotelu(); wynik = dziw - genwhotelu; cout << "iterator nowego klienta: " << iterator << endl; cout << "Do ktorego hotelu pojedzie: " << prawdop << endl; cout << "Dlugosc koleji klientow " << clientvector.size() << endl; clientvector.push_back( Client( iterator, systime, prawdop, dziw, 0, 1, 0, 0, 0 ) ); cout << "Dlugosc kolejki klientow po wstawieniu" << clientvector.size() << endl; cout << "ID " << clientvector[ iterator ].ID << endl; cout << "Start " << clientvector[ iterator ].start << endl; cout << "gdzie " << clientvector[ iterator ].gdzie << endl; cout << "Kiedy chce wyjechac " << clientvector[ iterator ].when_whant << endl; cout << "Jest tutaj " << clientvector[ iterator ].is_here << endl; airclientvector.push_back( iterator ); iterator++; } int length = airclientvector.size(); cout << "Kolejka na lotnisku ma: " << length << endl; for( int i = 0; i < length; i++ ) { cout << "przenosze na przystanek" << endl; cout << "kolejka na przystanku ma: " << clientvector.size() << endl; cout << "Przenosze pasazera o id: " << airclientvector[ i ] << endl; cout << "Jego polozenie to: " << clientvector[ airclientvector[ i ] ].is_here << endl; if( clientvector[ airclientvector[ i ] ].is_here == 1 ) { cout << "jestem w ifie" << endl; clientvector[ airclientvector[ i ] ].is_here = 2; cout << "zmienilem flage polozenia" << endl; cout << "klade do przystanku klienta: " << airclientvector[ i ] << endl; stationvector.push_back( airclientvector[ i ] ); } } airclientvector.clear(); length = airclientvector.size(); }
I teraz mam problem z odwołaniem: clientvector[iterator].ID;
iterator to int i wydaje mi się że w sposób jaki zapisałem powinno odwołać się do elementu w wektorze na pozycji iterator i wyświetlić jego ID ale tak się nie dzieje bo wyświetla losową liczbę.
Gdy wyświetlam wszystkie zmienne w konstruktorze Client to podstawiane są prawidłowo lecz gdy chcę się odwołać poprzez iterator do klienta z określonej pozycji w clientvector to już ich nie wyświetla.
Ktoś z was wie w czym tkwi błąd? Będę wdzięczny za wszelką pomoc. |
|
Monika90 |
» 2013-09-20 11:38:37 starta, gdziea, when_whanta, when_finisha, is_herea, prioryteta, go_or_backa |
To najśmieszniejsze nazwy zmiennych jakie w życiu widziałam. when whanta prioryteta? W jakim to jezyku? A twój konstruktor klasy Client jest zupełnie bez sensu, konstruktor powinien zainicjalizować składowe obiektu, a twój w ogóle nic nie robi. |
|
mab Temat założony przez niniejszego użytkownika |
» 2013-09-20 13:03:34 Konstruktor podstawie pod zmienne w nim się znajdujące odpowiednie z parametrów z którymi został wywołany. A dziwne nazwy wynikają z dodania 'a do nazwy zmiennej pod którą jest podstawiany dany parametr. Występują one tylko w konstruktorze więc ich dziwne nazwy nie sprawiają mi kłopotu w innych częściach programu.
Ale wracając do meritum problemu w jaki sposób się odwołać do poszczególnej zmiennej z klasy Client mając do dyspozycji wektor z obiektami typu Client. |
|
pekfos |
» 2013-09-20 13:13:54 wyświetlić jego ID ale tak się nie dzieje bo wyświetla losową liczbę. |
Skoro nie ustawiasz ID.. |
|
mab Temat założony przez niniejszego użytkownika |
» 2013-09-20 13:24:48 Pod ID podstawiam IDa. Czyli w wywołaniu konstruktora jest tam zmienna iterator typu int. |
|
DejaVu |
» 2013-09-20 13:33:08 Podstawiasz wartości do zmiennej lokalnej, która istnieje tylko i wyłącznie w czasie wykonywania konstruktora, a nie do zmiennej, która należy do obiektu klasy. |
|
mab Temat założony przez niniejszego użytkownika |
» 2013-09-20 13:39:36 Dziękuję :) w klasie Client też były takie zmienne tylko w konstruktorze niepotrzebnie podawałem jeszcze raz ich typy. Teraz wszystko działa poprawnie. Jeszcze raz dziękuję. |
|
« 1 » |