Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα,

 

Φτιάχνω μια υλοποίηση του Djikstra, και στο κάθε Label θέλω να κρατάω το προηγούμενο ωστε να μπορω να φτιαξω το μονοπάτι όταν τελειώσει ο αλγόριθμος.

 

Προσθετω λοιπόν στην κλάση μου ενα δεικτη προς Label.

 

Όταν τρέχω τον αλγόριθμο και παράγω κάποιο Label, αρχικά δοκίμασα το εξής:

 

 

LabelW.setPrevLabel(&currLabel);

 

(το τμήμα αυτό βρίσκεται σε ενα for που παράγει labels για τους γειτονες του currLabel.)

 

Το currLabel όμως αλλάζει στην πορεία, και αφού ειναι δείκτης μεσα στο Label, αλλάζει και εκεί.

Οπότε δοκίμασα το εξής, περιμένοντας να δουλέψει:

 

Label<float> previousLabel(1);  // ή και Label<float> previousLabel = currLabel; αν εχει διαφορα
previousLabel = currLabel;
LabelW.setPrevLabel(&previousLabel);

 

Το currLabel θα αντιγραφόταν στο previous, οπότε δεν θα άλλαζε στην πορεία. 

Το πρόβλημα παρόλα αυτά παραμένει.

 

Τι κάνω λάθος;

 

Ευχαριστώ.

Δημοσ.

Καμια ιδέα; Λογικα συμβαινει επειδη λογικα λογω του for ξαναγράφει πάνω στην ιδια θεση μνήμης... αλλά τοτε πως μπορει να γινει αυτο;

Δημοσ.

Λείπουν τόσες πολλές απαραίτητες πληροφορίες από το post σου που δεν ξέρω αν θα μπει κανένας στον κόπο να ζητήσει αρκετές διευκρινίσεις ή να ψάξει τις προηγούμενες δημοσιεύσεις για να συμπληρώσει τα κενά. Εντάξει, να βοηθήσουμε, αλλά εδώ για να αποκτήσουμε αυτό το "προνόμιο" πρέπει πρώτα να κάνουμε κανονική δουλειά -- την οποία θα έπρεπε να έχεις κάνει εσύ και στην ιδανική περίπτωση να μας τα έχεις όλα στο πιάτο σε βαθμό που να σε πούμε και υπερβολικό.

 

Δεν ξέρω αν αυτός είναι ο λόγος που δεν έχεις απαντήσεις γενικά, αλλά για μένα προσωπικά έτσι πάει.

  • Like 1
Δημοσ.

Ναι εχεις δικιο, τελικα το διορθωσα αυτο το κομματι, απλα αλλαζοντας λιγο την λογικη για να γλιτωσω τους δεικτες. Ελεγα μηπως εκανα κανενα συνηθισμένο λαθος.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...