Prvo, ako misliš da ti kod proradi, stavi
Kod:
class I : public O {};
Podrazumevano nasleđivanje je
private.
I je podklasa od
O. Ne možeš da koristiš pokazivač tipa
I* da ti pokazuje na objekat tipa
O (ok, možeš sa recimo reinterpret_cast, ali to je već varanje
).
Kada bi bacao pokazivač na objekat tipa
I (što je izvor memory leak-a, btw), a hvatao
O*, sve bi bilo OK.
Please, nikada nemoj da radiš
throw new nešto. Bolje uradi nešto ovako:
Kod:
try
{
throw I();
}
catch(O const& i)
{
x=3;
}
Takođe bi bilo dobro da uvek stavljaš
catch(...).
Pozz!
PS: sorry ako sam preterao, couldn't help it.