Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    1,992

    [c++]Problemi con template e parametri di default

    Salve a tutti. Sto sviluppando un albero binario usando i template (mi sto esercitando per un esame). Ho scoperto che usando i template non si possono passare parametri di default alle funzioni!
    Riporto un pezzo di codice.
    template <class T>
    class Node {
    T itsvalue;
    Node<T> *left;
    Node<T> *right;
    public:
    Node(T value);
    void setValue(T value);
    T getValue();
    Node<T> *getLeft();
    Node<T> *getRight();
    void printValue();
    ~Node();

    };

    template <class T>
    class Tree {
    Node<T> * root;
    int count;
    public:
    Tree(Node<T> * radix);
    Tree(T value);
    void insertNode(T value, Node<T> *temp, int i);
    void printInOrder();
    void printInOrder2(Node<T> *temp);
    //void printPostOrder();
    //void printPreOrder();
    ~Tree();
    };


    .......
    .......

    template <class T>
    void Tree<T>::insertNode(T value, Node<T> *temp, int i) {
    if (i==0) temp=root;
    if (temp!=0) {
    if(value<=temp->getValue()) {
    if((temp->getLeft())!=0) insertNode(value, temp->getLeft(), 1);
    else {
    temp->getLeft()=new Node<T>(value);
    count++;
    }
    }
    if(value>temp->getValue()) {
    if((temp->getRight())!=0) insertNode(value, temp->getRight(), 1);
    else {
    temp->getRight()=new Node<T>(value);
    count++;
    }
    }
    }
    i++;
    }

    Guardate la funzione insertNode. Innanzitutto non badate al codice dentro alla funzione che in alcuni punti non ha senso . All'inizio volevo assegnare un valore di default a temp, ma il compilatore mi dava errore. Mi sembrava logico che il compilatore non rischiasse di assegnare un valore a un tipo <T> generico. Allora per cercare di fare quello che volevo ho aggiunto il parametro i di tipo int, assegnandoli come valore di default 0, ma anche stavolta il compilatore ha dato errore. Evidentemente i template non accettano funzioni con parametri parametri di default? Se fosse vero sarebbe molto scomodo, perchè dovrei creare diverse funzioni in più.
    Qualcuno può fare chiarezza?

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    74
    Essendo template e' un po' illogico dare un valore di default a qualcosa che a priori non e' omogeneo.
    Al max puoi dargli di default il NULL.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    1,992
    Originariamente inviato da Molten
    Essendo template e' un po' illogico dare un valore di default a qualcosa che a priori non e' omogeneo.
    Al max puoi dargli di default il NULL.

    ok ma xchè non mi accetta neanche int n=0? E cmq anche scrivendo Node<T> *temp=0 non va

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    1,992
    nessuno che sappia qualcosa?

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.