Ecco la mia situazione (un semplice esempio).
Dire che ho una classe chiamata HiddenData
Allora ho un'altra classe chiamata StoreHiddenData
E infine una classe chiamata OperateHiddenData
Ecco la cosa, la mia classe chiamata HiddenData
ha membri privati che non voglio essere visibile al resto del mondo, ma ho ancora bisogno di classi per essere in grado di operare su membri privati di questo HiddenData
classe ( StoreHiddenData
e OperateHiddenData
per esempio). Mi piacerebbe poter passare questo oggetto a classi diverse che fanno cose diverse su di esso.
Un'altra cosa a cui stavo pensando è creare una forma di handle per questi oggetti HiddenData
, ma non riesco a pensare a un modo di usare gli handle senza usare nuovamente le classi friend (in modo da dare alle altre classi l'accesso ad un tabella che contiene ciò a cui puntano le maniglie, senza esporla anche al resto del mondo).
Stavo leggendo la domanda questa su questo sito qualche tempo fa mentre stavo facendo ricerche sull'uso delle classi di amici, e mi ha fatto pensare che usare gli amici fosse il modo migliore per andare.
Se qualcuno ha qualche suggerimento su come eseguire questa attività senza l'uso di classi friend in C ++, o se l'uso di classi friend è una pratica OOP OK, forniscimi qualche suggerimento. Grazie.
EDIT: Immagino che dovrei aggiungere un po 'più di informazioni sul mio problema. Per prima cosa, sto cercando di creare un'API composta da diverse classi che nascondono le loro funzionalità dall'esterno e consentono solo l'accesso alle funzioni pubbliche. All'interno ho strutture dati (o classi, non importa), che devono essere passate a queste diverse classi con funzioni pubbliche. Non voglio che l'esterno abbia accesso a qualsiasi cosa all'interno di queste strutture dati oltre a essere in grado di trasmetterle alle funzioni dell'API. Penso che sia come l'API di Windows, in cui si passano le funzioni di Handles alle API, ma non si possono effettivamente sezionare gli handle nel proprio codice. Bene vorrei fare qualcosa di molto simile, ma pur rimanendo orientato agli oggetti, e NON passare queste strutture dati private in giro per valore perché saranno GRANDI. Grazie ancora.