Peter Skrevet 19. juli 2005 Del Skrevet 19. juli 2005 Kort om prosjektet: Driver og lager en liten klasse for å kunne tråkke gjennom mapper i windows. Følgende kode skulle holde: struct Directory { std::string name; // name of directory we are in std::vector<Directory*> folders;// list of directories in the directory we are in std::vector<std::string> files; // list of files in the directory we are in }; typedef std::vector<Directory*> FolderList; typedef std::vector<std::string> FileList; Directory baseDir; FolderList::const_iterator itFolderList; FileList::const_iterator itFileList; std::string dirManager::getPrevDir() { if(baseDir.folders.begin() <= itFolderList-1) { return --itFolderList->name; /*Directory* tmp = *--itFolderList; return tmp->name;*/ } else return getCurDir(); } Problemet ligger i nederste funksjon.(som er en del av klassen "dirManager") Slik som det står nå, funker ikke funksjonen. En måte jeg fikk det til å funke, er kommentert ut, men denne er lite optimal etter min mening. (dessuten, slik den står nå, er den vel en memory leak?) Bare lurte på om det var noen måte å hente navnet(name) direkte ut ved hjelp av iteratoren, eller må jeg: Directory* tmp = *--itFolderList; std::string tmpStr = tmp->name; delete tmp; return tmpStr; (eller noe i den duren?) Hyggelig med alle svar, si ifra om dere trenger mer kode, det er mye å ta av Lenke til kommentar
☀ ❄ Skrevet 20. juli 2005 Del Skrevet 20. juli 2005 En iterator fungerer som en peker til et element i containeren. Ettersom den holder pekere til Directory, blir dette som en peker til en peker. For å hente ut name må du altså dereferere to ganger. Det gjør du ved å skrive: (*itFolderList)->name Lenke til kommentar
Peter Skrevet 20. juli 2005 Forfatter Del Skrevet 20. juli 2005 Aha! Takk skal du ha! Prøvde alle mulige metoder (bl.a **itFolderList->name), så jeg var inne på det, men fikk det søtten ikke til å funke, uansett hva jeg gjorde. Nuvel, takk skal du ha, skal prøve dette når jeg får windows64 til å boote skikkelig. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå