mercoledì 3 dicembre 2014

Esercitazione 7, soluzione esercitazione 6 e note relative al capitolo 8

Disponibile una nuova esercitazione sulle classi, le note relative al capitolo 8 e possibili implementazioni per l'esercitazione 6.

8 commenti:

  1. Salve Professore,
    volevo chiederle se è buona prassi, nella programmazione su più files, implementare i metodi composti da pochissime righe (specialmente quelli con una sola riga di codice) direttamente nel file .h della classe oppure se è sempre meglio mettere tutte le implementazioni (persino quelle di una sola riga) nel file .cpp della relativa classe.

    RispondiElimina
  2. Non tutti sono d'accordo su questo punto ma secondo me è sempre meglio nel .cpp.
    Considera anche che un metodo che oggi è di una riga non è detto che in una successiva versione del programma sia ancora di una riga e quindi se lo metti sin dall'inizio nel .cpp non dovrai spostarlo dopo.

    RispondiElimina
  3. Salve Professore,
    avrei qualche domanda riguardo il terzo esercizio di questa esercitazione:
    La funzione inserisci deve aggiungere un carattere dopo l'ultimo?
    La funzione rimuovi deve rimuovere tutte le occorrenze di un carattere? O forse deve rimuovere solo la prima occorrenza o magari solo l'ultima?
    Probabilmente questi dettagli hanno poca importanza ma preferisco essere sicuro.

    RispondiElimina
    Risposte
    1. La classe deve implementare una struttura dati di tipo stack quindi inserisci deve aggiungere il carattere in cima allo stack, e rimuovi rimuovere solo il carattere che si trova in cima allo stack.

      Elimina
    2. La ringrazio per il chiarimento professore. Purtroppo ho poca familiarità nell'ambito pratico con queste strutture in quanto al corso di calcolatori mi sono state presentate solo in via teorica.

      Elimina
  4. Salve professore,

    ho un problema con l'esercizio 2 che chiede di implementare la classe Date.
    Questo è il mio header Date.h: http://pastebin.com/embed_js.php?i=Enyp9USA

    Il problema riguarda il dato membro "static int currentYear" e il metodo pubblico "static void set_currentYear( int )" che ho così implementato nel file Date.cpp:

    void Date::set_currentYear( int n ){
    currentYear = n;
    }

    Questo è l'errore in compilazione:
    Date.cpp:(.text+0x2a): undefined reference to 'Date::currentYear'

    ​E' come se il metodo non riesce a "vedere" currentYear.
    Ho provato a mettere static int currentYear come pubblico, ma il problema persiste.

    RispondiElimina
    Risposte
    1. Il problema potrebbe essere che dichiari ma non definisci il membro static current year. Prova a mettere nel .cpp int Date::currentYear;

      Elimina
  5. Ho provato aggiungendo int Date::currentYear; all'interno della definizione del metodo, adesso l'errore è un altro: http://oi62.tinypic.com/10d790z.jpg

    RispondiElimina