Blog del corso di Programmazione (9 CFU) tenuto da Marco La Cascia presso l'Universita' di Palermo per il corso di laurea in Ingegneria Informatica e delle Telecomunicazioni. Tratta la programmazione a oggetti in Java.
sabato 29 gennaio 2011
Possibili soluzioni esercitazione 9
Disponibile una implementazione dell'esercitazione 9. Confrontatela con la vostra e postate eventuali dubbi o differenze di approccio.
Salve prof avrei una piccola curiosità. In Java ero solito dare ai parametri dei metodi setter lo stesso nome del dato membro privato, per aumentare la leggibilità e per comodità, risolvendo l'ambiguità utilizzando "this"; per farmi capire un metodo che imposta il nome
public void setNome(String nome) { this.nome = nome; }
In C++ ho visto che esiste "this", ed è un puntatore, tuttavia la notazione
*this.dato = dato
mi da errore a volte, e non riesco a capire con che criterio; il compilatore parla di "non-class type" ?? Mentre una cosa del genere
Il puntatore this e' un dato membro che hanno implicitamente tutte le classi e contiene l'indirizzo dell'oggetto corrente. L'istruzione *this.dato non funziona semplicemente perche' l'operatore . ha precedenza su * quindi provi ad accedere a this.dato e segnala quell'errore. Basta fare (*this).dato o piu' semplicemente this->dato per risolvere il problema.
Salve prof avrei una piccola curiosità. In Java ero solito dare ai parametri dei metodi setter lo stesso nome del dato membro privato, per aumentare la leggibilità e per comodità, risolvendo l'ambiguità utilizzando "this";
RispondiEliminaper farmi capire un metodo che imposta il nome
public void setNome(String nome) {
this.nome = nome;
}
In C++ ho visto che esiste "this", ed è un puntatore, tuttavia la notazione
*this.dato = dato
mi da errore a volte, e non riesco a capire con che criterio; il compilatore parla di "non-class type" ??
Mentre una cosa del genere
Classe& Classe::metodo()
{
.......;
.......;
return *this;
}
funziona sempre (perlomeno quando l'ho usata, cioè per permettere le chiamate a cascata)
Grazie
Il puntatore this e' un dato membro che hanno implicitamente tutte le classi e contiene l'indirizzo dell'oggetto corrente.
RispondiEliminaL'istruzione *this.dato non funziona semplicemente perche' l'operatore . ha precedenza su * quindi provi ad accedere a this.dato e segnala quell'errore. Basta fare (*this).dato o piu' semplicemente this->dato per risolvere il problema.