Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - [problema] Accesso a dati privati/protetti tramite classi friend
Forum - C/C++ - [problema] Accesso a dati privati/protetti tramite classi friend

Avatar
sigur (Normal User)
Newbie


Messaggi: 5
Iscritto: 25/04/2011

Segnala al moderatore
Postato alle 18:43
Lunedì, 25/04/2011
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 sorgente - presumibilmente C++

  1. #include<string>
  2. using std::string;
  3.  
  4. class File{
  5.         friend class HashTable;
  6. .....
  7. private:
  8.  unsigned int occurrences;
  9. };



codice della classe "B" che mi crea problemi:
Codice sorgente - presumibilmente C/C++

  1. vector<File>& where_are(const list<string>& phrases, const int & size){
  2.         .....
  3. founded_files[it_file->get_name()].occurrences += it_file->get_occurrences();
  4.                                 }
  5.         return founded_files;
  6. }



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 :rotfl:.
Di conseguenza me la prendeva come una funzione esterna alla classe e non potevo utilizzare i "privilegi" friend. :asd:

Spero che questa mia distrazione sia anche d'aiuto agli altri. :rofl:

Ultima modifica effettuata da sigur il 25/04/2011 alle 20:05


PM