G++ a delete
Michal Samek
webmaster na tony.cz
Čtvrtek Leden 27 12:31:36 CET 2005
Dobry den,
tak trochu se ucim c++ a narazil jsem na problem
(g++ (GCC) 3.3.5 (Debian 1:3.3.5-5)) s mazanim dynamicky
tvorenych objektu. Kdyz vytvorim objekt nejake specialni podtridy a
umistim jej do kontejneru, ktery je pro obecnejsi nadtridu a pak jej
pomoci toho pointeru chci smazat delete, tak se to (casto nebo vzdy, uz
ani nevim, asi tehdy, kdyz podtrida pridava nove member variables)
porouci se SEGFAULTem. Mozna je to normalni, fakt nevim, ale nabourava
to mou predstavu o vyuziti polymorfismu v c++, to bych musel udrzovat
kontejnery pro kazdy konkretni typ, abych se tech objektu potom korektne
zbavil... Jak to tedy je, narazil jsem na nejaky bug, nebo je to
feature? Pokud jsem to napsal nesrozumitelne, pak tedy:
class Bota {
protected:
int a;
};
class Sandal : public Bota {
protected:
int i;
};
Bota *b = new Sandal();
delete b;
Je to korektni, rusit to takhle pres pointer jehoz typ se presne
neshoduje se skutecnym typem? Protoze to mi prave havaruje, musel jsem
to cele krkolomne prepsat a cele pohodli polymorfnich objektu je v p...
Diky
--
Michal Samek <webmaster na tony.cz>
Další informace o konferenci Linux