Esatto. O meglio per essere precisi, essendo dato una variabile privata, vuol dire che NON puoi fare t.dato = 1234 oppure cout << t.dato.Originariamente inviato da gygabyte017
Un membro private di una classe è inaccessibile al 100% dall'esterno della classe?
Ma certo che funziona! Hai dato "al mondo intero" un puntatore alla variabile privata della classe!!! E quindi chiunque la può alterare.Originariamente inviato da gygabyte017
Per esempio io non potrei fare:
Il codice funziona eccome. In teoria solo la funzione Imposta(int) potrebbe modificare dato che è private... ma io ci riesco lo stesso!codice:#include <iostream> using namespace std; class Test { private: int dato; public: void Imposta(int a); int * f(); }; void Test::Imposta( int a) { dato = a; } int * Test::f() { return &dato; } int main() { Test t; t.Imposta(100); int * x = t.f(); *x = 22; cout << *t.f() << endl; system("pause"); return 0; }
Come mai??![]()
E comunque tale soluzione fa molta acqua dal punto di vista del design oop. Se la tua variabile è privata perché devi dare in giro un puntatore alla variabile???