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;
}