In un progetto in cui sto implementando la codifica di Huffman, ho necessità di utilizzare come coda di priorità un ABR ma ho un problema nella creazione della funzione inserisci. Vi posto prima di tutto la class nodo che ho utilizzato:

codice:
class nodo {
    private:
            int frequenza;
            unsigned char valore;
            nodo *sinistro;
            nodo *destro;
    public:
            nodo() {};
            nodo(int f, unsigned char v) {frequenza = f; valore = v;};
            ~nodo() {};
            void setFrequenza(int f) {frequenza = f;};
            int getFrequenza() {return frequenza;};
            void setValore(unsigned char v) {valore = v;};
            int getValore() {return valore;};
            void setSinistro (nodo *s) {sinistro = s;};
            nodo getSinistro() {return *sinistro;};
            void setDestro (nodo *d) {destro = d;};
            nodo getDestro() {return *destro;};
};
Questa invece è l'implementazione della funzione:
codice:
void abr::insertABR(int d, unsigned char v)
{
    nodo* t = new nodo;
    cout << "Nodo t = " << t;
    nodo* parent;
    t->setFrequenza(d);
    cout << "Set d di t a " << d;
    t->setValore(v);
    cout << "Set v di t a " << v;
    t->setSinistro(nullptr);
    t->setDestro(nullptr);
    parent = nullptr;
    cout << "Nodo parent = " << parent;


    if(isEmpty()) {
            root = t;
            cout << "Albero vuoto, root settata a t " << t;
    }
    else
    {
        nodo* curr;
        curr = root;
        cout << "Nodo curr = " << curr;
        while(curr)
        {
            parent = curr;
            if(t->getFrequenza() > curr->getFrequenza()) {
                cout << "Scende a destra: " << t->getFrequenza() << " e' maggiore di " << curr->getFrequenza();
               curr = curr->getDestro();
                cout << curr;
            } else  {
                cout << "Scende a sinistra: " << t->getFrequenza() << " e' minore di " << curr->getFrequenza();
                curr = curr->getSinistro();
                cout << curr;
            }
        }


        if(t->getFrequenza() < parent->getFrequenza()) {
           parent->setSinistro(t);
           cout << "t diventa figlio sinistro di " << parent << endl;
         } else {
           parent->setDestro(t);
           cout << "t diventa figlio destro di " << parent  << endl;
         }
    }
Ho aggiunto un paio di cout per cercare l'errore ed ovviamente è la riga:
codice:
ù
curr = curr->getDestro();
curr = curr->getSinistro();
riportandomi l'errore cannot convert nodo to *nodo in assignment. Se le cambio in *curr mi parte ma mi va in crash quando raggiunge quella parte di codice.

Come potrei risolvere?