szablon sterty, realokacja tablic

0

Mam napisać klasę reprezentującą stertę dowolnych obiektów.

template<class typ>
class sterta {
		public:
		sterta(const typ&);
		// ... pominmy troche kodu
                void push(const typ&); // dodaje
               private:
               typ *wart;
               int dlug;
      };

Pomyślałem że zrobię to na tablicach, w najprostszy możliwy sposób.

template<class typ>
void sterta<typ>::push(const typ &value) {
int gdzie=0; // numer komorki tabeli gdzie dodamy
for(int n=0;n<dlug;n++) { 
		if(wart[n]>=value) gdzie = n+1; // szukamy wiekszej wartosci i wstawiamy za nia
		}
typ *kopia;
kopia = new typ[dlug+1]; // robimy kopie z jednym elementem więcej
for(int n=0;n<gdzie;n++) { // kopiujemy do gdzie
	kopia[n] = wart[n];
	}
kopia[gdzie] = value;
for(int n=gdzie;n<dlug;n++) {
	kopia[n+1] = wart[n];
	}
if (wart) delete [] wart;  // usuwamy stare
wart = kopia; // podmieniamy na nowa
dlug++;
}

O ile działa dla int czy float, to dla jakiś klas pojawiają się błędy z pamięcią. Gdzie tu jest błąd?

0

Nie widzę błędów. A te "jakieś klasy" mają poprawnie przeciążone operatory przypisania?

0

Dzięki wielkie, moja klasa którą tam pakowałem nie miała przeciążonego operatora =.

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