Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Avrei bisogno di un consiglio: se in una classe ho un attributo booleano dichiarato private che, per tutta la durata del programma, dovrà essere acceduto solamente dalla classe stessa (mai dall'esterno, quindi) credo non abbia senso dichiarare dei metodi get e set, giusto? Ci si può accedere direttamente così, per esempio:
Codice sorgente - presumibilmente Plain Text
booleano = true;
Altra domanda: per delle specifiche di un progetto sul quale sto lavorando, dovrei convertire "dinamicamente" un albero binario da rosso-nero a binario di ricerca e viceversa. L'idea che avevo avuto è quella di visitare l'albero e di settare a NULL o al nodo sentinella i campi puntatori ai figli sinistro e destro dei nodi senza figli. Questo è il metodo che ho scritto:
if(nodo->get_sx()==NULL)// controllo il figlio sinistro
{
nodo->set_sx(NIL);// se non c'è, collego quel lato al nodo sentinella
}
else// c'è il figlio
{
converti_albero (nodo->get_sx(), conversione);// scendo a sinistra
}
if(nodo->get_dx()==NULL)
{
nodo->set_dx(NIL);
}
else// c'è il figlio
{
converti_albero (nodo->get_dx(), conversione);// scendo a sinistra
}
}
}
elseif(conversione ==true)// converti da RB a BST
{
if(nodo!=NIL)
{
if(nodo->get_sx()== NIL)// controllo il figlio sinistro
{
nodo->set_sx(NULL);// se è il nodo sentinella, sgancio quel lato
}
else// c'è il figlio
{
converti_albero (nodo->get_sx(), conversione);// scendo a sinistra
}
if(nodo->get_dx()== NIL)
{
nodo->set_dx(NULL);
}
else// c'è il figlio
{
converti_albero (nodo->get_dx(), conversione);// scendo a sinistra
}
}
}
}
Può essere scritto meglio o in maniera più sintetica? Tornando alla prima domanda, all'atto della chiamata di questo metodo, non ha senso scrivere così:
In risposta alla prima domanda:
Se il dato membro lo vuoi modificare solo all'interno della classe allora è inutile creare funzioni set e get che lo modifichino. Se invece vuoi cambiarne il valore fuori dall'ambito di visibilità bisogna usarle.