25/04/11 16:43
sigur
Salve, come si può intuire dal titolo del topic ho un piccolo problema a far "interagire" due classi.
A meno che non ricordi male, dichiarando in una classe A che essa è amica della classe B, tramite le funzioni di B, potrei accedere alle variabili "nascoste" della classe A.
I pezzi di codice che mi stanno danno problemi sono questi:
codice della classe "A":
codice della classe "B" che mi crea problemi:
L'errore che il compilatore mi da è che "occurrences" è una variabile privata di File e quindi non può essere acceduta. Ma dichiarando in File che essa è amica di HashTable, non potrei accederci?
Essendo il mio primo messaggio(/problema :rofl spero di essere stato il più chiaro possibile a tentare di esprimerlo.
Grazie
Spulciando su internet non ho trovato nulla che mi poteva aiutare, se non i soliti 4 esempi.
________
EDITO:
Dopo ore di svariate imprecazioni, ho trovato l'errore. Non mi ero reso conto di aver dimenticato il namespace HashTable:: prima del nome della funzione .
Di conseguenza me la prendeva come una funzione esterna alla classe e non potevo utilizzare i "privilegi" friend.
Spero che questa mia distrazione sia anche d'aiuto agli altri.
A meno che non ricordi male, dichiarando in una classe A che essa è amica della classe B, tramite le funzioni di B, potrei accedere alle variabili "nascoste" della classe A.
I pezzi di codice che mi stanno danno problemi sono questi:
codice della classe "A":
#include<string> using std::string; class File{ friend class HashTable; ..... private: unsigned int occurrences; };
codice della classe "B" che mi crea problemi:
vector<File>& where_are(const list<string>& phrases, const int & size){ ..... founded_files[it_file->get_name()].occurrences += it_file->get_occurrences(); } return founded_files; }
L'errore che il compilatore mi da è che "occurrences" è una variabile privata di File e quindi non può essere acceduta. Ma dichiarando in File che essa è amica di HashTable, non potrei accederci?
Essendo il mio primo messaggio(/problema :rofl spero di essere stato il più chiaro possibile a tentare di esprimerlo.
Grazie
Spulciando su internet non ho trovato nulla che mi poteva aiutare, se non i soliti 4 esempi.
________
EDITO:
Dopo ore di svariate imprecazioni, ho trovato l'errore. Non mi ero reso conto di aver dimenticato il namespace HashTable:: prima del nome della funzione .
Di conseguenza me la prendeva come una funzione esterna alla classe e non potevo utilizzare i "privilegi" friend.
Spero che questa mia distrazione sia anche d'aiuto agli altri.
Ultima modifica effettuata da sigur 25/04/11 18:05
aaa