Καλησπέρα και πάλι. Αρχικά θα ήθελα να ρωτήσω, είναι η ιδέα μου ότι το link της παράδοσης 18/12 είναι το ίδιο με αυτό της παράδοσης 11/12, το οποίο είναι η 10η διάλεξη και όχι η 11η;
Τώρα, σχετικά με την ερώτησή μου επί του κώδικα. Σε προηγούμενη ερώτηση (Error prompt - member inaccessible) αναλύθηκε η χρησιμότητα του setter και του getter για private μέλη κλάσης. Πιο συγκεκριμένα, αφορούσε τον παρακάτω κώδικα:
class student {
private:
int ma8ima_1{};
int ma8ima_2{};
int ma8ima_3{};
public:
void set_ma8ima_1(int a) { ma8ima_1 = a; }
int get_ma8ima_1() { return ma8ima_1; }
void set_ma8ima_2(int b) { ma8ima_2 = b; }
int get_ma8ima_2() { return ma8ima_2; }
void set_ma8ima_3(int c) { ma8ima_3 = c; }
int get_ma8ima_3() { return ma8ima_3; }
student() {};
student(float a, float b, float c) : ma8ima_1(a), ma8ima_2(b), ma8ima_3(c) {}
float average() { return (ma8ima_1 + ma8ima_2 + ma8ima_3) / 3.0; }
} stnts[NO_STUDENT];
Ωστόσο, μετά από λάθος κατά την γραφή κώδικα με βάση ένα παράδειγμα στο βιβλίο διαπίστωσα ότι, παρά το γεγονός ότι δε χρησιμοποίησα getter, υπήρχε κανονικά πρόσβαση στις private μεταβλητές μέλη απλά και μόνο με το setter, και μάλιστα οι τιμές των μεταβλητών εκτυπώθηκαν κανονικά. Ο λόγος για τον παρακάτω κώδικα:
class kafetiera {
private:
double kafes{};
double gala{};
double zaxari{};
double nero{};
double kafedes{};
public:
bool eparkeia(double z, double k, double n, double g) {
if (zaxari >= z && kafes >= k && nero >= n && gala >= g)
return true;
else
return false;
};
kafetiera() {};
kafetiera(double z, double k, double n, double g) : kafes(k), gala(g), zaxari(z), nero(n) {};
void set_ylika(double z, double k, double n, double g) { kafes=k; gala=g; zaxari=z; nero=n; };
void status() {
cout << "kafes: " << kafes << ' ' << " Gala: " << gala << " zaxari: " << zaxari << " Nero: " << nero << " Kafedes ws twra: " << kafedes;
};
void sketos(double ar);
void glykos(double ar);
void metrios(double ar);
}kaf1;
Ήθελα να ρωτήσω συνεπώς, τελικά το getter έχει νόημα χρήσης ή και μόνο το setter φτάνει για τις private μεταβλητές; Και αν έχει, υπό ποιες προϋποθέσεις είναι απαραίτητο;