Nel mio design ho una classe che è principalmente un fronte per un std::vector<OtherClass>
. Devo, nella mia interfaccia di classe, consegnare a qualsiasi chiamante uno std::iterator
, consegnare un riferimento all'intero vector
o fornire un set di funzioni per accedere ai contenuti del mio vector
? O ci si avvicina in modo diverso?La mia classe è principalmente un fronte per un contenitore, dovrei esporre questo fatto?
Ulteriori informazioni: Gli elementi nel contenitore verranno impostati durante l'inizializzazione e non verranno aggiunti quando il programma è in esecuzione normalmente. I client della mia classe spesso eseguono query e modificano lo stato degli elementi OtherClass
, anche se non in modo critico.
Considerare l'utilizzo di funzioni libere che accettano 'std :: vector' anziché i membri di una classe wrapper. – erenon
Questo è molto specifico per l'applicazione. Gli iteratori potrebbero funzionare, ma cosa succede se si aggiunge costantemente al vettore? Gli iteratori verrebbero invalidati quando il vettore si rialloca. Dacci più informazioni, per favore! – Conduit
Se 'OtherClass' è costante, perché non specializzarsi? – Nelfeal