Problem z rozszerzeniem dynamicznej tablicy o nowe elementy
Ostatnio zmodyfikowano 2010-07-23 09:35
Maver Temat założony przez niniejszego użytkownika |
Problem z rozszerzeniem dynamicznej tablicy o nowe elementy » 2010-07-22 20:56:15 Witam poraz kolejny mam problem. Odrazu przejdę więc do sedna sprawy. Oto kod: #include <iostream> using namespace std;
class ob { public: int pierwszy; public: ob( int pier = 0 ) : pierwszy( pier ) { } void * operator new( size_t ile ) { static int licznik = 0; static ob * wob; void * wv; if( !licznik ) { licznik++; ob * wob = new ob[ 15 ]; cout << "Pierwsze wywolanie \n"; wv = & wob[ 0 ]; return wv; } else { cout << licznik << " wywolanie" << endl; licznik++; wv = & wob[ licznik ]; return wv; } } void pokaz() { cout << pierwszy; } };
int main() { ob * pierwszy = new ob( 1 ); ob * drugi = new ob( 2 ); ob * trzeci = new ob( 3 ); } Program się kompiluje jednak przy konstruowaniu drugiego elementu wykonywana jest instrukcja w bloku else więc podejrzewam że tam jest problem. Program ma za zadanie przy pierwszym wywołaniu operatora new zarezerwować miejsce na np 15 elementów natomiast przy kolejnych ma przydzielać każdemu miejsce w tablicy. |
|
VND |
» 2010-07-23 00:52:17 zamiast: daj: tworzysz nowy obiekt zamiast przypisać do istniejącego. |
|
Maver Temat założony przez niniejszego użytkownika |
» 2010-07-23 09:35:04 Kurde :( No rzeczywiście tworzyłem drugi wskaźnik niestatyczny i gubił adres po pierwszym wywołaniu a przy drugim nie miał już czego przypisywać. No błąd powstał na skutek wielu przeróbek tego programu bo pierw wskaźnik definiowany był w bloku if i nie usunąłem tego. Dzięki. |
|
« 1 » |