freestuff.gr αρχική σελίδα
 FAQFAQ    ΑναζήτησηΑναζήτηση   Λίστα ΜελώνΛίστα Μελών   Ομάδες ΜελώνΟμάδες Μελών   <b>Εγγραφή Μέλους</b>Εγγραφή Μέλους 
 ΠροφίλΠροφίλ   Επιλογές μέλους Επιλογές   Τα bookmarks μου Τα bookmarks μου   Προσωπικά μηνύματαΠροσωπικά μηνύματα 
  διαφήμιση  

Καλώς ήρθατε στο forum μας! Για να συμμετάσχετε στις συζητήσεις θα πρέπει να είσαστε μέλος. Γίνετε μέλος τώρα!.

O Pointer this σαν argument


 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » Γλώσσες Προγραμματισμού » C, C++
Moderators:  Super-Moderators, WebDev Moderators
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 1 [3 Μηνύματα]      Bookmarks Tags: argument Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
ΑποστολέαςΜήνυμα
Erevis


Μέλος από: 12 Ιουν 2008
Μηνύματα: 56
Περιοχή: Χαλάνδρι
View users profile
ΜήνυμαΣτις: 23 Απρ 2009 16:10    Θέμα: O Pointer this σαν argument Απάντηση με παράθεση  Mark this post and the followings unread

Καλησπέρα σε όλους, μπαίνω αμέσως στο ψητό, έχω μια class, που αντιπροσωπεύει ένα forum, η οποία σαν private members έχει έναν pointer προς το parent forum(αν δεν υπάρχει δείχνει στο NULL),το ID του και ένα vector της class αυτής ο οποίος περιέχει τα subforums.

Ο constructor της forum δέχεται σαν arguments το όνομά του,το ID του και έναν pointer o οποίος δείχνει στο parent forum.

Επίσης εχει μια μέθοδο, newSubforum η οποία δέχεται σαν arguments το όνομα και το ID ενός forum και καταχωρεί στον vector το subforum. Όταν δημιουργείται το subforum σ'αυτή τη μέθοδο, σαν argument στον constructor του subforum στέλνω τον this, για να κάνει initialize στον parent.

Το πρόβλημα που προκύπτει είναι πως όταν προσπαθώ να χρησιμοποιήσω τον parent το πρόγραμμα κρεμαέι. Έχω δοκιμάσει να εκτυπώσω τον this μέσα στη newSubforum και τον parent στον constructor και μου βγάζει την ίδια διεύθυνση μνήμης.



κώδικας:
 

//to _parent exei san default argument to NULL
forum::forum(int _ID,const char *_name,forum *_parent)
{
    ID = _ID;
    strcpy(name,_name);
    parent = _parent;
    lastSubForumID = -1;
}

void forum::newSubforum(int _ID,const char *_name)

    forum temp(_ID,_name,this);
    subforums.insert(subforums.end(),temp);
    lastSubForumID = _ID;
}



Έχει κανείς ιδέα για το τί μπορεί να φταίει?
bxenos


Μέλος από: 18 Αυγ 2008
Μηνύματα: 53

View users profile
ΜήνυμαΣτις: 23 Απρ 2009 17:17    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Βαλε περισσότερο κώδικα (την δηλωση του class forum και μια main() με τις δοκιμες σου).
Υπάρχει περίπτωση να μπερδεύεις stack με heap και να κανεις corruption το vector. Αλλα μονο με τις δυο συναρησεις που παραθετεις δεν βγάζω ακρη. Το this δεν βλεπω να εχει προβλημα.
Erevis


Μέλος από: 12 Ιουν 2008
Μηνύματα: 56
Περιοχή: Χαλάνδρι
View users profile
ΜήνυμαΣτις: 23 Απρ 2009 21:37    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Ενταξει το βρήκα το πρόβλημα, δεν τσέκαρα για NULL στις δοκιμές και κρέμαγε επειδή τα πρώτα forums δεν είχαν parent ! Ευχαριστώ για την απάντηση
Εμφάνιση Μηνυμάτων:   
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 1 [3 Μηνύματα] Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » Γλώσσες Προγραμματισμού » C, C++
Τώρα είναι 07 Δεκ 2016 10:33 | All times are UTC + 2


Email This Page to Someone! add to Favorites

     Powered by p h p B B © 2001,2005 p h p B B Group
Για άμεση επικοινωνία με τον διαχειριστή του freestuff.gr στο email: freestuff.gr(παπάκι)gmail.com


Copyright © 1999-2013 Freestuff.gr All Rights Reserved  
Version Aegean, designed by N. Tsaganos