» Poradna » Programy

C++ rušení objektů

 |   | 

Vkládám instance mé třídy do seznamu (seznam pointerů na mé instance), ale mám problém, že se mi instance ruší "pod rukama" když je vkládám ve smyčce a pointery jsou pak neplatné. Přikládám vzor, snad je to zřejmé o co mi jde (viz metoda main na konci).

#include
#include
#include
#include

using namespace std;

class Tvar {
protected:
int x, y;
public:
Tvar() {x = 0; y = 0;} ;
int getX() {return x;};
int getY() {return y;};
};

class Obdelnik: public Tvar {
int sirka, vyska;
public:
Obdelnik(const int
y = sy;
sirka = sir;
vyska = vys;
};
int getSirka() {return sirka;};
~Obdelnik() {cout seznam;
public:
Seznam() {};
void vloz(Obdelnik
};
void vyjmi() {
list ::iterator it;
for (it=seznam.begin(); it!=seznam.end(); it++) {
Obdelnik *obd = (Obdelnik*) *it;
cout getSirka();
}
}
};

int main(int argc, char *argv[])
{
int poradi = 0;

// toto funguje, ale je to neprakticke na pouziti
// Obdelnik obd(2, 0, 0, 0);
// sez.vloz(obd);
// Obdelnik obd2(2, 0, 1, 0);
// sez.vloz(obd2);
// Obdelnik obd3(5, 0, 5, 0);
// sez.vloz(obd3);
// sez.vyjmi(); // vrati 0, 1, 5

// po provedeni tohoto jsou spatne pointery, protoze se objek Obdelnik prubezne rusi, jak to vyresit?
Seznam sez;
for (poradi = 0; poradi < 5; poradi++) {
Obdelnik obd(2, 0, poradi, 0);
sez.vloz(obd);
};
sez.vyjmi(); // vrati 4,4,4,4,4 coz je spatne

system("PAUSE");
return EXIT_SUCCESS;
}

Mohlo by vás také zajímat

Odpovědi na otázku

 |   | 

Otvor tuto temu este 10x, budes "king".

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | 

nevidno, co robi metoda vloz() ale v principe by si si usetril kopec problemov, keby si do toho zoznamu nevkladal objekty ale len pointery na objekty vytvarane v tom cykle.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

jo už jsem to vyřešil a udělal jsem to přes ty dynamicky vytvářené pointery, díky

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

Jezis to je prasarna. V tom se nikdo babrat nebude. Nerika ti neco odsazovani? A http://pastie.org/... ?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

sorry, ale v náhledu před vložením to vypadalo dobře

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Rušení, #include, Return, Public, Instance, Tvar, Void, Vzor