Αν ακολουθήσεις αυτά που σου είπα πριν, θα δουλευει. Η αληθεια ειναι καθε φορα κανεις αλλαγες, τις οποιες δεν ειχα προσεξει. Θα στα ξαναγραψω μια φορα μαζεμενα.
Εχεις μια private μεταβλητη. Αυτο σημαινει οτι ειναι προσβάσιμη μονο απο την ιδια την κλάση, κανεναν αλλο και για κανενα λογο.
Αν θελεις να κανεις αλλαγες στην μεταβλητη, προσθετεις ενα getter και ενα setter οπως εχεις κανει. Ο getter μας επιστρεφει την μεταβλητή και ο setter την αλλάζει.
Τωρα εσυ στο προγραμμα σου, σε καθε επαναληψη εχεις γραψει και κατι διαφορετικο που δεν βγαζει νοημα.
for (int i = 0; i < NO_STUDENT; ++i){
cin >> a;
cout << stnts[i].set_ma8ima_1(a);
}
Αυτο είναι λάθος γιατι προσπαθεις να τυπωσεις το αποτελεσμα μια void συναρτησης (δηλαδη το τιποτα), οποτε δεν κανει καν compile.
for (int i = 0; i < NO_STUDENT; ++i) {
cin >> a;
a = stnts[i].get_ma8ima_1();
}
Εδω αναθετεις στο a
το αποτελεσμα της get_ma8ima_1()
, δηλαδη αναθετεις στο a την τιμη της private μεταβλητης, κατι το οποιο δεν εχεις ορισει. Αρα τελικα δεν αλλαζεις ποτε την τιμη της μεταβλητης ma8ima_1
.
Αυτό που θέλεις είναι:
int grade;
cin >> grade;
stnts[i].set_Ma8ima_1(grade);
για να θεσεις τιμη στην μεταβλητη του μαθηματος, και
int c;
c = stnts[i].get_Ma8ima_1();
cout << c << '\n';
για να την παρεις και να την τυπωσεις.