PDA

View Full Version : [c++ AIUTO] PROBLEMA CON FRIEND


sametal
16-11-2005, 11:33
INTANTO, ciao a tutti...

sto creando questa classe:

class Multimap {
private :
class ListaKey {
public:
ListaKey();
ListaKey(const Key&, ListaKey*);
Key info;
ListaKey* next;
};
ListaKey* first;
.....
};

nn importa a che serve...il prob e' che se dichiaro questo metodo

bool insert (int k, int v) { //tipi da sostituire nel template
Multimap::ListaKey* punt=Multimap::first;
};

mi dice

"Multimap::ListaKey is private within this context"

grazie per ogni consiglio...

P.S.: penso sia un prob di friend...ma nn riesco a capire..

bottomap
16-11-2005, 17:45
Ciao,

Non mi sembra si tratti di un metodo... se cosė č dovresti specificare di quale classe fa parte.

Se non č un metodo (come apparentemente sembra) dovrai effettivamente dichiararlo friend per poter utilizzare membri privati della classe in questione... E' comunque una cattiva idea, meglio che la funzione faccia parte della classe... tra l'altro la funzione in questione non pare faccia niente, immagino manchi una parte dell'implementazione...

Ciaociao :)

fek
16-11-2005, 19:31
INTANTO, ciao a tutti...

sto creando questa classe:

class Multimap {
private :
class ListaKey {
public:
ListaKey();
ListaKey(const Key&, ListaKey*);
Key info;
ListaKey* next;
};
ListaKey* first;
.....
};

nn importa a che serve...il prob e' che se dichiaro questo metodo

bool insert (int k, int v) { //tipi da sostituire nel template
Multimap::ListaKey* punt=Multimap::first;
};

mi dice

"Multimap::ListaKey is private within this context"

grazie per ogni consiglio...

P.S.: penso sia un prob di friend...ma nn riesco a capire..


Multimap::first e' dichiarato privato. Non puoi (e non devi) accederlo dall'esterno della classe. Dichiarare un'altra classe friend non e' la soluzione. La soluzione e' scrivere un metodo di accesso al campo first (getFirst()).