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

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

Δημοσ.

Καλησπέρα και χρόνια πολλά! Έχω μια απλή ασκησούλα στην 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... Δεν καταλαβαίνω τι έχω κάνει λάθος...

Ευχαριστώ εκ των προτέρων... 

Δημοσ.

Κάνε αντικατάσταση το first.print() στην main με τον κώδικα που έχεις γράψει για την print και θα βρεις το λάθος σου. 



Επίσης, θα ήταν καλό να χρησιμοποιείς το this... π.χ.

 

 

void print()
{
  cout << "Price: " << this->price << endl;
}

 



Hint...

 

Θα ήταν καλό αντί για print να έχεις toString μέθοδο. 

 



Hint 2

 

Δες το initialisation list. 

Δημοσ.

Δεν βρήκα κάποιο λάθος παραμόνο το οτι η price ήταν private... 

Επίσης τι ακριβώς είναι η toString μέθοδο??? 

Δημοσ.

Γράψε σε χαρτί τι ακριβώς θα πάει να εκτελεστεί (με τις εντολές που έχεις ήδη) εάν κάνεις αντικατάσταση στην main το first.print().

 

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

Δημοσ.

Δεν μπορώ να καταλάβω δυστυχώς... Ίσως είναι κάτι πολύ χαζό που μου διαφεύγει φφφ....

Δημοσ.

Χαζό δεν είναι τίποτα.

 

Εάν δεν το βρεις μόνος σου, δεν θα μάθεις να προστατεύεσαι από τέτοια λαθάκια...

 

Hint..

 

γράφεις:

 

 

cout << first.print()

 

Σε αυτή τη γραμμή, αντικατέστησε το first.print με Ό,ΤΙ έχεις βάλει στο body της print. 

Δημοσ.

Κάνοντας αυτό που λες το μόνο και προφανές που παίρνω σαν λάθος είναι το οτι δεν αναγνωρίζεται στην main οι μεταβλητές της κλάσης,κάτι που είναι λογικό... σαν συνάρτηση όμως της κλάσης δεν πρέπει κανονικά να αναγνωρίζει τις μεταβλητές αυτές??? Αυτό είναι το λάθος μου δηλαδή??? 

Δημοσ.

H print() δεν επιστρέφει κάτι για να το εμφανίσεις με cout, αλλά τυπώνει κάτι.

 

Γραψε απλα

 

first.print();

second.print();

third.print();

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

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

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

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

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

Σύνδεση

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

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