Le variabili protected e private possono essere accedute solo dall'interno della classe.
In piu', la variabili protected possono essere accudute _ANCHE_ dalle classi derivate.

Per leggere o modificare i valori di variabili membro, e' buona pratica scrivere dei metodi appositi:

codice:
public blabla geta () {
   return a
}

public blabla seta (int valore) {
   a = valore
}
Mi sembra che pero' in C++ vi fosse una convenzione specifica per i costruttori che permetteva di settare tutti membri in maniera rapida ed indolore. Ma non ricordo bene...
Pero' ricordo che, in generale, una funzione che deve accedere i membri privati di una classe puo' essere resa "amica" con la parola chiave "friend" preposta al suo prototipo.