Quote Originariamente inviata da monia82 Visualizza il messaggio
Grazie MItaly,
il testo è questo:
realizzare una Template Class
template<class T>
class DblLinked
{
}
implementare aggiungi(T& contatto), rimuovi(T& contatto)e la stampa dell'intera lista (operatore <<)
Implementare una Classe Persona con dati uso rubrica telefonica e applicarla con la classe DblLinked
Ok, allora la cosa è piuttosto semplice.
La classe DblLinked, come previsto, non deve entrare nel merito, ma semplicemente fornire uno storage generico per il tipo T; la aggiungi andrà ad aggiungere un nodo in coda (o in testa) alla lista, copiandoci dentro il valore che ti viene passato (nota che qui `contatto` non è inteso come tipo, ma semplicemente come nome del parametro della aggiungi).

Analogamente, nella rimuovi andrai a cercare un nodo il cui elemento risulta uguale a quello che ti viene passato ed eliminerai il nodo corrispondente.

Nella stampa poi userai l'operatore << per stampare tutti gli elementi (scorri la lista e per ciascun elemento fai std::cout<<nodo.elemento).

[/I]A questo punto mi sta venendo il dubbio anche su come ho creato la struttura per la persona, io l'avevo fatta così:
[/FONT]
codice:
class Persona
{
    public:
        char nome[30];
        char cognome[30];
        char tel[30];
 
        void add_nome( );
        void add_cognome( );
        void add_telefono( );
};
[FONT=arial]
ma il prof, tramite email, mi ha detto che si aspettava una "chiave" formata da nome e cognome, e il restante dei dati formati dalla coppia attributo-valore, in modo tale che quando stampo viene fuori:
Mario Rossi
cellulare - 123456
cellulare2 - 987654
indirizzo - blablabla...
etc etc...
Boh, per ora non starei a preoccuparmene, il testo del problema non mi sembra che menzioni nulla del genere, e una cosa del genere richiede un po' più di "magia" di quanto credo sappiate usare.

Per il resto, per Persona io mi aspetterei una cosa del tipo:
codice:
struct Persona
{
    std::string nome;
    std::string cognome;
    std::string indirizzo;
    std::string telefono1;
    std::string telefono2;
};
(ammesso che possiate usare std::string, in caso contrario dovranno essere degli array di char).

Le altre due cose importanti da implementare a quel punto sono:
  • l'overload dell'operator== (altrimenti la lista non può sapere nella remove quando due elementi sono uguali);
  • l'overload dell'operator<< (altrimenti la lista non può stampare gli elementi nella stampa()).

Le due cose ti risultano più o meno note?