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.

2 commenti:

  1. 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

    Classe& Classe::metodo()
    {
    .......;
    .......;
    return *this;
    }

    funziona sempre (perlomeno quando l'ho usata, cioè per permettere le chiamate a cascata)
    Grazie

    RispondiElimina
  2. 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.

    RispondiElimina