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

Πρόβλημα στη C++ με δεικτες


ΠάρηςΓ

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

Δημοσ.

Παιδες αντιμετωπίζω προβλημα....

Εχω φτιάξει μια συναρτηση να εμφανιζει στην οθόνη μια linkedMatrix όπως θέλω. Αλλα θελω να κάνω να κάνει πρόσθεση...

¨Ολα καλά εκτός του ότι έχω πρόβλημα όταν επιστρέφω το αποτέλεσμα..

 

Εδω ειναι η συνάρτηση γι ατη προσθεση κάνει overload τον τελεστή +...

 

friend LinkedMatrix<T> operator+ (LinkedMatrix<T> &l, LinkedMatrix<T> &r)

{

 

μπλα

μπλα

μπλα

cout << C;

return C;

}

 

Το πρόβλημα είναι οτι εδώ όταν κάνω cout << C δουλεύει άψογα..

Αλλά αν το κάνω απο τη main ...

 

int _tmain(int argc, _TCHAR* argv[])

{

LinkedMatrix<int> A, B, C;

cin >> A;

cout << "Matrix A ine" << endl << A;

cin >> B;

cout << "Matrix B ine" << endl << B;

 

C= A+B;

 

 

cout << C; EDO KRASARI... μου βγαζει οτι εχει προβλημα με τους δεικτες μετα...

getchar();

getchar();

}

 

Δοκίμασα να επιστρέφω δείκτη κτλ κ αλλα κόλπα αλλα warnings οτι επιστρέφω τοπικη μεταβλητη κτλ..

Καμιά ιδέα;

Δημοσ.

αυτό το μπλά-μπλα έχει σημασία:

>friend LinkedMatrix<T> operator+ (LinkedMatrix<T> &l, LinkedMatrix<T> &r)
{

μπλα
μπλα 
μπλα
cout << C;
return C;
}

πως εχει δεσμευτεί χωρος για την C στην operator;

 

αν αντί για count << C, βάλεις count << (A+B) κάνει το ίδιο;

Δημοσ.

Τωρα τελικα δε μπορω να το δοκιμάσω.. Κρασαρει το προγραμα χωρις να μπορω να βρω γιατι... Εντωμεταξύ ολοκληρωνετε κανονικά η συνάρτηση αλλα στο τελος κρασαρει χωρις να φαινεται το γιατι

Δημοσ.

Έχει copy contstructor το template LinkedMatrix;

Βάλε το template και την συνάρτηση εδώ αν θέλεις να τα συζητησουμε.

 

Πάντως οι διάφορες Linked List (αν είναι τέτοια) δεν έχουν δυνατότητα αντιγραφής, αρα δεν μπορείς να κάνεις return C. Θα μπορουσες να κάνεις

>
void Add(LinkedMatrix<T> &C,const LinkedMatrix<T> &l, const LinkedMatrix<T> &r)
{
μπλα
μπλα 
μπλα
}

Δημοσ.

bxenos ...

Πια κομμάτια να κάνω ακριβώς πάστε;

Δηλαδή λες οτι δεν γίνεται να επιστρέψω μια συνδεδεμενη λιστα με δεικτες άρα να βάλω καλύτερα μια add?

Αν το βαλω add κ εγω πιστευω θα δουλέψει αλλα επειδη το + ήταν πιο κυριλέ..

Δημοσ.

Πάρη, είσαι σίγουρος ότι το πρόβλημα σου είναι στον operator+; Όπως είπε και ο bxenos το μπλά παίζει σημασία τι είναι. Σε πολλά σημεία θα μπορούσε ο κώδικας να παρουσιάζει απρόβλεπτη συμεριφορά όπως στους operator<<, templated copyconstructor και assignment operator κλπ.

 

Αν δεσμεύεις δυναμικά μνήμη θέλουν πολλή προσοχή ο copycon και assignop όπως έγραψα παραπάνω. Επειδή είναι πάρα πολλά τα σημεία ίσως είναι καλύτερα να δείξεις λίγο παραπάνω κώδικα, please σε php-tags για να είναι ευκολότερη η ανάγνωση του κώδικα.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...