Salve,
come da titolo ho un problema quando provo a passare un doppio puntatore,
io ho questa classe:
codice:
template <typename T>
class BinaryNode
{
private:
T key;
BinaryNode<T>* left;
BinaryNode<T>* right;
BinaryNode<T>* parent;
public:
T getkey() const { return key; }
void setkey(T k){ key = k; }
BinaryNode<T>* getleft() const { return left; }
void setleft(BinaryNode<T>* l){ left = l; }
BinaryNode<T>* getright() const { return right; }
void setright(BinaryNode<T>* r){ right = r; }
BinaryNode<T>* getparent() const { return parent; }
void setparent(BinaryNode<T>* p){ parent = p; }
};
e questo metodo:
codice:
template <typename T>void BinarySearchTree<T>::insert(BinaryNode<T>** node, T key)
{
if (*node == NULL)
{
*node = this->newNode(key);
cout << "-Creating... " << (*node)->getkey() << endl << endl;
}
else
{
if (key <= (*node)->getkey())
{
cout << "<-Left" << endl;
insert(&(*node)->left, key); //in questa linea mi da errore
(*node)->getleft()->setparent(*node);
}
else
{
cout << "Right->" << endl;
insert(&(*node)->right, key); //in questa linea mi da errore
(*node)->getright()->setparent(*node);
}
}
}
Solo che quando vado a compilare mi da errore nella linea commentata
questo errore:
1>------ Inizio compilazione: Progetto: [ASD]Vocabolario, Configurazione: Debug Win32 ------
1> main.cpp
1>c:\users\davide\dropbox\davide\[asd]\progetto\[asd]vocabolario\[asd]vocabolario\classi.h(124): error C2102: '&' richiede un l-value
1> c:\users\davide\dropbox\davide\[asd]\progetto\[asd]vocabolario\[asd]vocabolario\classi.h(113): durante la compilazione della classe modello, funzione membro 'void BinarySearchTree<std::string>::insert(BinaryNode<T > **,T)'
1> with
1> [
1> T=std::string
1> ]
1> c:\users\davide\dropbox\davide\[asd]\progetto\[asd]vocabolario\[asd]vocabolario\classi.h(104): vedere il riferimento all'istanza del modello di funzione 'void BinarySearchTree<std::string>::insert(BinaryNode<T > **,T)' in corso di compilazione
1> with
1> [
1> T=std::string
1> ]
1> c:\users\davide\dropbox\davide\[asd]\progetto\[asd]vocabolario\[asd]vocabolario\classi.h(103): durante la compilazione della classe modello, funzione membro 'void BinarySearchTree<std::string>::insert(T)'
1> with
1> [
1> T=std::string
1> ]
1> c:\users\davide\dropbox\davide\[asd]\progetto\[asd]vocabolario\[asd]vocabolario\main.cpp(25): vedere il riferimento all'istanza del modello di funzione 'void BinarySearchTree<std::string>::insert(T)' in corso di compilazione
1> with
1> [
1> T=std::string
1> ]
1> c:\users\davide\dropbox\davide\[asd]\progetto\[asd]vocabolario\[asd]vocabolario\main.cpp(9): vedere il riferimento all'istanza del modello di classe 'BinarySearchTree<std::string>' in corso di compilazione
1>c:\users\davide\dropbox\davide\[asd]\progetto\[asd]vocabolario\[asd]vocabolario\classi.h(130): error C2102: '&' richiede un l-value
========== Compilazione: 0 completate, 1 non riuscite, 0 aggiornate, 0 ignorate ==========
Qualcuno sa come risolverlo?
Grazie mille,
Bye