Originariamente inviato da gygabyte017
Un membro private di una classe è inaccessibile al 100% dall'esterno della classe?
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
Per esempio io non potrei fare:

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;
    }
Il codice funziona eccome. In teoria solo la funzione Imposta(int) potrebbe modificare dato che è private... ma io ci riesco lo stesso!
Come mai??
Ma certo che funziona! Hai dato "al mondo intero" un puntatore alla variabile privata della classe!!! E quindi chiunque la può alterare.

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???