Problem z powiększaniem zbioru obiektów
Ostatnio zmodyfikowano 2011-12-23 21:02
Dawidsoni Temat założony przez niniejszego użytkownika |
Problem z powiększaniem zbioru obiektów » 2011-12-23 18:42:11 Witam. Często muszę powiększać zbiory obiektów, więc napisałem sobie funkcję szablonową, która wygląda tak: template < class typ > void powiekszenie( typ * wsk_nazwa, int licznik, int o_ile ) { typ * wsk_kopia = new typ[ licznik ]; for( int i = 0; i < licznik; i++ ) { wsk_kopia[ i ] = wsk_nazwa[ i ]; } delete[] wsk_nazwa; wsk_nazwa = new typ[ licznik + o_ile ]; for( int i = 0; i < licznik; i++ ) { wsk_nazwa[ i ] = wsk_kopia[ i ]; } delete[] wsk_kopia; } Używam jej w ten sposób: if( licznik % 5 == 0 ) { powiekszenie( wsk, licznik, 5 ); } Jeśli jest poniżej 5 obiektów wsk, to wszystko działa ok. Jeśli jest powyżej 5 obiektów to wszystko działa też dobrze (sama funkcja nie powoduje zacięcia programu). Kiedy natomiast napiszę po powiększeniu: To program bardzo dziwnie reaguje. Czasem działa poprawnie, a czasem się zawiesza... To działa, tak jakby funkcja powiększająca czasem nie działała. Jeśli zamiast używać funkcji szablonowej, piszę bezpośrednio kod dla typu int w miejscu po warunku if, to wszystko działa poprawnie. Proszę o pomoc. |
|
pekfos |
» 2011-12-23 19:21:38 przekaż wskaźnik przez referencje. |
|
Dawidsoni Temat założony przez niniejszego użytkownika |
» 2011-12-23 20:12:54 Tak? powiekszenie( & sprajt, licznik, 5 ); Nie działa tak jak co... Jeszcze 1 oprócz tego. String m; m.SetText( "aa" ); Błąd: undefined reference to `_imp___ZN2sf7Unicode4TextC1EPKc'| |
|
pekfos |
» 2011-12-23 20:17:49 Nie tak..
PS: co ty tam pchasz do tematu? 1 temat = 1 problem |
|
Dawidsoni Temat założony przez niniejszego użytkownika |
» 2011-12-23 20:29:46 To jak?
Dobra, założę potem nowy problem. Ale to dziwne, bo zawsze mi ta funkcja działała, a teraz jest błąd, jakbym czegoś nie zaimportował. (nic nie zmieniałem). |
|
pekfos |
» 2011-12-23 20:34:15 To tak void powiekszenie( typ *& wsk_nazwa, int licznik, int o_ile ) { |
|
Dawidsoni Temat założony przez niniejszego użytkownika |
» 2011-12-23 20:41:44 Dzięki:D Działa.
Jeszcze tak dziwnego zapisu nie widziałem. Teraz mi powiedz, co to zmienia, i dlaczego mój zapis sprawiał zawieszanie programu? |
|
pekfos |
» 2011-12-23 20:42:47 |
|
« 1 » 2 |