Salut !
Alors, tout d'abord, la différence principale entre référence et pointeurs :
un pointeur peut être modifié (on peut changer l'objet pointé)
une référence NON : on désigne l'objet pointé à la création de la référence, et ensuite il est IMPOSSIBLE de le changer...
dans une classe, les références DOIVENT être initialisées dans le constructeur... cela sous-entends donc que dès la création de ton instance, tu connaisses la map à laquelle tu vas relier la map de ton instance...
Ensuite, ne perd pas de vue qu'une "référence sur une variable" ne représente pas "une variable de même valeur que la variable" mais bel et bien cette variable !
ce qui signifie que toute modification de la variable entraîne la même modification sur la référence, et inversement, tout simplement parce qu'elle partagent et désignent la même adresse mémoire !
Maintenant, si tu as bien saisie tout ça, et que tu souhaites toujours utiliser une référence, il te faut définir la fonction membre de la classe qui fournie la map ainsi :
map<int, vector<int> >& ClassFournisseuse::GetMap() { return The_Map; }
et ton constructeur de la classe recevante :
ClasseRecevante::ClasseRecevante(map<int, vector<int> >& map) : The_Map(map) { }
et dans le .h de la classe recevante, il faut déclarer The_Map ainsi :
map<int, vector<int> >& The_Map;
Bien sûr, il s'agit d'exemple...
tu peux également utiliser des références constantes, qui te permettent de n'accéder à la map qu'en lecture, dans ce cas, les trois bouts de code deviennent respectivement :
const map<int, vector<int> >& ClassFournisseuse::GetMap() { return The_Map; }
ClasseRecevante::ClasseRecevante(const map<int, vector<int> >& map) : The_Map(map) { }
const map<int, vector<int> >& The_Map;
Cepandant, sauf dans des cas très particulier où l'utilisation des références est réellement justifié (peut-être ta situation en fait-elle partie
), je déconseillerais l'usage des références comme données membres d'une classe 
Si tu as d'autres questions sur le sujet, je serais heureux d'y répondre
Partager