Εργαστήριο Τεχνολογίας Λογισμικού
0 votes
453 views

Όταν κάνω υποβολή στον grader μου εμφανίζει αυτό.Τι ακριβώς φταίει;

in progtech by (350 points) | 453 views

1 Answer

0 votes

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

Από αυτό που βλέπω στο screenshot σου, φαίνεται ότι στον destructor του stack χρησιμοποιείς τον operator!= των στοιχείων τύπου T. Αυτό το καταλαβαίνεις απο τις πρώτες 4 γραμμές των σφαλμάτων που σου βγάζει, γιατί το πρόγραμμα ελέγχου προσπαθεί να φτιάξει ένα stack από strings και ο compiler γκρινιάζει ότι δεν μπορεί να συγκρίνει ένα string με τη σταθερά '\000'.

Θα μυρίσω τώρα λίγο τα νύχια μου, καθώς έχω πρόσβαση στα sources που υποβάλλετε στον grader και σε διάφορες βάσεις χρηστών (π.χ., grader, q2a), αν και αυτό είναι λίγο άδικο προς όλους όσους θα ήθελαν να απαντήσουν την ερώτησή σου και δεν έχουν πρόσβαση σε όλα αυτά.

Νομίζω λοιπόν ότι είσαι ο pi20b019 και ότι ο κώδικας του destructor σου (στην υποβολή που βγάζει τα παραπάνω λάθη) μοιάζει κάπως έτσι:

~stack () {if (array[top]!= '\0') delete [] array;}

Η έκφραση array[top] έχει τύπο T και τη συγκρίνεις με το \0 που έχει τύπο char, κάτι που επιβεβαιώνει τα παραπάνω.

by (9.5k points)

301 questions

289 answers

288 comments

903 users