[ erno @ 28.04.2006. 23:02 ] @
zdravo ljudi, imam jedan mali problemicic sa auto_ptr. da prvo opisem o cemu se radi: napisao sam jedan mali testni program koji se sastoji iz abstraktne klase Osoba, izvedenih klasa Covjek i Zena koji imaju izmedju ostalih i metodu kloniraj() koja vraca novi objekt tog tipa za npr. zenu: Zena *kloniraj() { return new Zena(*this); } isto tako za Covjek. pored ovih imam i jednu klasu Factory koja mi je zaduzena za stvaranje objekata i vracanje novostvorene instance klijentu, u mom slucaju ce to biti main funkcija. Za stvaranje objekata tj. vracanje instance objekta zaduzena je funkcija vratiInstancu() cija signatura izgleda ovako: auto_ptr<Osoba> vratiInstancu(int id) --> id mi je zapravo id objekta koji je registrovan (njegova instanca moze biti vracena/stvorena) a kod izgleda ovako: if(validanObjekt()) { iterator... -> registrovani objekti su spremeljni u mapi sa svojim id. return iterator->second->kloniraj(); } else error(); ->nevazno u main funkciji registrujem tipove objekata koje factory moze vratiti, znaci: Covjek sa id-em 1 i Zena sa 2. Factory *fact=new Factory(); auto_ptr<Osoba> pt1(fact->vratiInstancu(1)); -> vrati mi instancu od Covjek-a kad pokusam pozvati neku funkciju/metodu iz klase Covjek npr. reciKoSi() koja treba reci ja sam Covjek kao output ne dobijem nista. pa cak, kad pozovem ovu metodu ili bilo koju drugu, na ovaj nacin, ne poziva mi se destruktor od factory klasse. mozel mi neko reci sta je problem? hvala unapred. pozdrav, ernad |