alexc Δημοσ. 7 Μαΐου 2013 Δημοσ. 7 Μαΐου 2013 Καλησπέρα και χρόνια πολλά! Έχω μια απλή ασκησούλα στην C++ στην οποία εξασκούμαι και δεν μπορω να βρω το λάθος μου στον κώδικα μου δεν καταλαβαίνω... #include <iostream> using namespace std; #include <string.h> class book { private: int price; public: int page_num; char title[20]; book(); book(char s[20]); book(char s[20],int p); void print() { cout<<"Price:"<<price<<endl<<"Pages:"<<page_num<<" title:"<<title<<endl; } }; book::book() { price=0; page_num=0; strcpy(title," "); } book::book(char s[20]) { strcpy(title,s); } book::book(char s[20],int p) { strcpy(title,s); price=p; } int main() { book first,second("To pigadi"),third("Titlos",500); cout<<first.print()<<second.print()<<third.print(); } Με βγ΄ζει error στην συνάρτηση print... Δεν καταλαβαίνω τι έχω κάνει λάθος... Ευχαριστώ εκ των προτέρων...
Timonkaipumpa Δημοσ. 7 Μαΐου 2013 Δημοσ. 7 Μαΐου 2013 Κάνε αντικατάσταση το first.print() στην main με τον κώδικα που έχεις γράψει για την print και θα βρεις το λάθος σου. Επίσης, θα ήταν καλό να χρησιμοποιείς το this... π.χ. void print() { cout << "Price: " << this->price << endl; } Hint... Θα ήταν καλό αντί για print να έχεις toString μέθοδο. Hint 2 Δες το initialisation list.
alexc Δημοσ. 7 Μαΐου 2013 Μέλος Δημοσ. 7 Μαΐου 2013 Δεν βρήκα κάποιο λάθος παραμόνο το οτι η price ήταν private... Επίσης τι ακριβώς είναι η toString μέθοδο???
Timonkaipumpa Δημοσ. 7 Μαΐου 2013 Δημοσ. 7 Μαΐου 2013 Γράψε σε χαρτί τι ακριβώς θα πάει να εκτελεστεί (με τις εντολές που έχεις ήδη) εάν κάνεις αντικατάσταση στην main το first.print(). Αντικατάσταση σε όλη την γραμμή όμως που πας να εκτελέσεις.
alexc Δημοσ. 7 Μαΐου 2013 Μέλος Δημοσ. 7 Μαΐου 2013 Δεν μπορώ να καταλάβω δυστυχώς... Ίσως είναι κάτι πολύ χαζό που μου διαφεύγει φφφ....
Timonkaipumpa Δημοσ. 7 Μαΐου 2013 Δημοσ. 7 Μαΐου 2013 Χαζό δεν είναι τίποτα. Εάν δεν το βρεις μόνος σου, δεν θα μάθεις να προστατεύεσαι από τέτοια λαθάκια... Hint.. γράφεις: cout << first.print() Σε αυτή τη γραμμή, αντικατέστησε το first.print με Ό,ΤΙ έχεις βάλει στο body της print.
alexc Δημοσ. 7 Μαΐου 2013 Μέλος Δημοσ. 7 Μαΐου 2013 Κάνοντας αυτό που λες το μόνο και προφανές που παίρνω σαν λάθος είναι το οτι δεν αναγνωρίζεται στην main οι μεταβλητές της κλάσης,κάτι που είναι λογικό... σαν συνάρτηση όμως της κλάσης δεν πρέπει κανονικά να αναγνωρίζει τις μεταβλητές αυτές??? Αυτό είναι το λάθος μου δηλαδή???
albNik Δημοσ. 8 Μαΐου 2013 Δημοσ. 8 Μαΐου 2013 H print() δεν επιστρέφει κάτι για να το εμφανίσεις με cout, αλλά τυπώνει κάτι. Γραψε απλα first.print(); second.print(); third.print();
alexc Δημοσ. 8 Μαΐου 2013 Μέλος Δημοσ. 8 Μαΐου 2013 Ποοοο απίστευτο... Σας ευχαριστώ πολύ και τους δυο!!
παπι Δημοσ. 9 Μαΐου 2013 Δημοσ. 9 Μαΐου 2013 Hint... Θα ήταν καλό αντί για print να έχεις toString μέθοδο. καλυτερα ostream operator
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα