Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    254

    [C++] putatori a template class

    Problema, ho creato la seguenta class template:

    template<class T>
    class listaElettrodomestici {
    private:
    T *elettr;
    listaElettrodomestici *next;
    public:
    listaElettrodomestici();
    ~listaElettrodomestici();
    bool isEmpty();
    void add(T *elettr, listaElettrodomestici *l);
    listaElettrodomestici* del(int pos, listaElettrodomestici *l);
    listaElettrodomestici* getNesxt(){return next;};
    elettrodomestico* getElettr(){return elettr;};
    };
    .............

    prima domanda: come faccio a dichiarare un puntatore a questa classe?

    "scrivendo: listaElettrodomestici *l1 = NULL; --> dice: elenco argomenti x modello di classe listaElettrdomestici mancante"

    secona damanda: come dichiaro una funzione che opera su tale classe?

    "scrivendo: listaElettrodomestici* inserisciInLista(listaElettrodomestici *l1); //inserimento in lista --> elenco argomenti x modello di classe listaElettrdomestici mancante"

  2. #2
    Il nome "listaElettrodomestici" da solo non definisce un tipo, devi specificare sempre anche l'argomento template (o rendere le funzioni che la ricevono come parametro template a loro volta rispetto al tipo di parametro della lista).
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Non volevi usare le classi ?
    Con le classi, i template per questo esercizio sono inutili perchè puoi sfruttare il polimorfismo (oltre al fatto che se fai con i template quella lista non potrà contenere elettrodomestici diversi da quello che dai come parametro).
    lolide
    Java Programmer

    Informati

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    254
    Al momento della dichiarazione del puntatore nn so quale sia il tipo di parametro.
    mi potresti fare un esempio?

    Quello che sto cercando di fare è dichiarare un puntatore, che punterà alla lista che mi torna dalla funzione inserisciInLista(), dopo averla invocata.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    254
    Ciao lolide,
    si infatti la lista con le classi l'ho fatta!

    E' che devo implementarela stessa utilizzando ora i class template, e sto cercando di capire come posso fare, partendo dalla struttura che ho già!

    Praticamente pensavo ti trasformare solamente la classe "listaElettrodomestici" in class template, e metterci dentro di volta in volta la classe "frigorifero" o "lavastoviglie" o....... senza modificarle nella loro struttura tassonomica che hanno ora.

  6. #6
    Originariamente inviato da folal
    Al momento della dichiarazione del puntatore nn so quale sia il tipo di parametro.
    mi potresti fare un esempio?

    Quello che sto cercando di fare è dichiarare un puntatore, che punterà alla lista che mi torna dalla funzione inserisciInLista(), dopo averla invocata.
    Devi dare il parametro alla classe quando fai l'oggetto, quindi:

    codice:
    listaElettrodomestici<elettrodomestico> *l1 = NULL;
    Comunque facendo così puoi inserire nella lista solo oggetti elettrodomestico (che andrebbe scritto con la prima lettera maiuscola (Elettrodomestico))
    lolide
    Java Programmer

    Informati

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    254
    Quindi la mia lista alla fine conterrà solo oggetti di tipo elettrodomestico, nn cambiando da quello che già ho fatto ora con la versione a classi.
    Giusto?

    Avrei sperato di volta in volta inserire le classi derivate da "elettrodomestico", vale a dire "frigorifero", "lavastoviglie", .......

  8. #8
    Originariamente inviato da folal
    Quindi la mia lista alla fine conterrà solo oggetti di tipo elettrodomestico, nn cambiando da quello che già ho fatto ora con la versione a classi.
    Giusto?

    Avrei sperato di volta in volta inserire le classi derivate da "elettrodomestico", vale a dire "frigorifero", "lavastoviglie", .......
    Si. Conterrà solo oggetti del tipo che espliciti come parametro.
    Certo se lasci l'ereditarietà com'era, passando la classe base come parametro, puoi aggiungere le varie classi child (lavastoviglie, frigorifero ecc...) ma poi è la stessa cosa di farlo senza i template.
    lolide
    Java Programmer

    Informati

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    254
    Perfettamente chiaro.
    Detto questo resta da capire in che casi venga veramente utile utilizzare i class template, la dove il polimorfismo ottenuto con l'eridarietà nn possa già fare egregiamente!

    Sapendo che il punto di forza delle classi dinamiche è il fatto di gestire + tassonomie senza alcun oggetto generico che le unisce, diventa difficile applicarle in ogni contesto.

  10. #10
    Originariamente inviato da folal
    Perfettamente chiaro.
    Detto questo resta da capire in che casi venga veramente utile utilizzare i class template, la dove il polimorfismo ottenuto con l'eridarietà nn possa già fare egregiamente!

    Sapendo che il punto di forza delle classi dinamiche è il fatto di gestire + tassonomie senza alcun oggetto generico che le unisce, diventa difficile applicarle in ogni contesto.
    Infatti con l'avvento della programmazione ad oggetti, i template sono usati di meno.
    Io sinceramente non ne ho mai avuto bisogno, si usano + spesso per parametrizzare magari dei parametri che non possono essere child di una classe, quindi tipi primitivi.
    Comunque anche in questo caso si possono creare classi "wrapper" e risolvere tutto.
    lolide
    Java Programmer

    Informati

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.