nodreams.ct Δημοσ. 21 Ιανουαρίου 2003 Δημοσ. 21 Ιανουαρίου 2003 παιδιά έχω τον ακόλουθο κώδικα: > CItem* a; a= new CItem; cin>> a->x; delete a; cout<< a->x <<" Giati den to typwneis???"; return 0; ότι εντολές υπάρχουν κάτω απο το delete δεν εκτελούνται... αυτό συμβαίνει μόνο όταν χρησιμοποιώ CItem (είναι μια απλή κλάση που έφτιαξα) για int ας πούμε δουλευει.. ο constructor της είναι: > CItem::CItem(int code) { x=code; } Τι μπορεί να φταίει;
GrMikeD Δημοσ. 21 Ιανουαρίου 2003 Δημοσ. 21 Ιανουαρίου 2003 Pws na ektelestoun bre auta pou einai katw apo to "delete a", afou exeis kanei delete to object sou, kai pleon to a den deixnei pouthena! Prepei na bazeis pada to "delete a" san teleutaia edoli, otan teleiwnei i xrisi tou! Diladi: CItem* a; a= new CItem; cin>> a->x; cout<< a->x <<" Tora to tupwnei!"; delete a; return 0; Upopsin: ama einai opws eipes o constructor, logika prepei i deuteri sou edoli na einai: a= new CItem(4);
nodreams.ct Δημοσ. 21 Ιανουαρίου 2003 Μέλος Δημοσ. 21 Ιανουαρίου 2003 Συγνώμη βλακίες έγραφα το προγραμμα είναι αυτό: > CItem* a; a= new CItem(0); cin>> a->x; delete a; cout <<" Giati den to typwneis???"; return 0;
Jaco Δημοσ. 21 Ιανουαρίου 2003 Δημοσ. 21 Ιανουαρίου 2003 Λογικά η cout δεν επειρεάζεται από το delete αφού δεν χρησιμοποιείς πια τον δείκτη...
GrMikeD Δημοσ. 22 Ιανουαρίου 2003 Δημοσ. 22 Ιανουαρίου 2003 Molis eida ton kwdika pou mou esteiles email. To lathos sou einai ston destructor tis CItem: CItem::~CItem() { // delete this; } i edoli "delete this" den exei noima pou ebales. Gia auto dimiourgouse lathos to programma to opoio den to ekane catch i C++ kai termatize to programma ksafnika. Ama tin bgaleis, doulevei kanonika.
nodreams.ct Δημοσ. 22 Ιανουαρίου 2003 Μέλος Δημοσ. 22 Ιανουαρίου 2003 Να σαι καλά φίλε μου! Και πρέπει να την παραδώσω αύριο και είχα σπάσει το κεφάλι μου να βρώ τι φταίει Απορώ πως το βρήκες.. Σ'ευχαριστώ και πάλι!
GrMikeD Δημοσ. 22 Ιανουαρίου 2003 Δημοσ. 22 Ιανουαρίου 2003 Den eimai expert stin C++, to mono pou xreiastika einai koini logiki! : mou eipes oti i teleutaia cout den fainetai. Auto simainei oti kati den paei kala kai den fainetai. Diladi kapoia edoli prin apo autin,dimiourgei exception kai kleinei to programma. Opote diereunoume tin proigoumeni edoli. Itan i "delete a". Auti i edoli, kalei automata ton destructor tis klasis sou. Opote psaxneis meta pros ta ekeini tin kateuthunsi. Ston destructor tis, eida to delete this, pou einai lathos fusika (sbineis mesa sto idio object ton xwro mnimis tou?). Auta!
nodreams.ct Δημοσ. 23 Ιανουαρίου 2003 Μέλος Δημοσ. 23 Ιανουαρίου 2003 Ένα έχω να πω: Όλα φαίνονται πολύ λογικά εκ των υστέρων!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.