Ciao a tutti. Ho una domanda riguardo ai contenitori stl.
Supponiamo di avere una classe A che contiene nella sua parte privata un contenitore della stl. La classe B ha bisogno di poter accedere agli oggetti contenuti nel contenitore della classe A. Ora quello che potrei fare, è quello di fornire un metodo pubblico in A, che restituisce il suo stesso contenitore per riferimento. Ad esempio:
class A{
private:
std::vector<T> mioVettore;
public:
std::vector<T>& getVettoreT()const{ return mioVettore;};
}
Quello che non mi piace di tutto questo, è che se in futuro io volessi cambiare il modo in cui salvo i dati in A,ad esempio usando un contenitore diverso, dovrei andare a modificare tutti i metodi di B che prima usavano il tipo vector, per adattarli al nuovo tipo. In questo caso, che abbiamo solo due classi non è un problema eccessivo, ma nel caso in cui questo metodo fosse stato usato anche da altri classi, ci sarebbe parecchio codice da cambiare.
In quale modo è possibile evitare tutto questo? Che tipo di interfaccia pubblica deve avere A per essere più generica possibile e non dipendere dal suo stesso tipo privato?
Grazie a tutti!