problema tra classi innestate
Inviato: giovedì 7 giugno 2007, 17:13
Ciao a tutti...provo ad esperre il mio problem che mi sa tenendo fermo con un progetto che ha una scadenza a dir poco importante.
Ho la seguente dichiarazione di classi:
template
class tree{
friend class Iteratore;
private:
class nodo{..........};
...
nodo * root;
public:
class Iteratore{
friend class tree;
private:
.....
void B(nodo*);
public:
nodo * A() {.....}
};
};
Ora, se faccio uan cosa simile:
template
tree::nodo* tree::Iteratore::A(){ B(root); }
mi viene dato il seguente errore:
error: invalid use of nonstatic data member ‘tree::root’
(ovviamente ho un main.cpp dove provo la classe e il template usa un tipo int).
Perché mi da questo errore? Facendo delle prove, il problema sembra l'accessibilità a root. eppure ci sono le due dichiarazioni di amicizia!
Ho la seguente dichiarazione di classi:
template
class tree{
friend class Iteratore;
private:
class nodo{..........};
...
nodo * root;
public:
class Iteratore{
friend class tree;
private:
.....
void B(nodo*);
public:
nodo * A() {.....}
};
};
Ora, se faccio uan cosa simile:
template
tree::nodo* tree::Iteratore::A(){ B(root); }
mi viene dato il seguente errore:
error: invalid use of nonstatic data member ‘tree::root’
(ovviamente ho un main.cpp dove provo la classe e il template usa un tipo int).
Perché mi da questo errore? Facendo delle prove, il problema sembra l'accessibilità a root. eppure ci sono le due dichiarazioni di amicizia!