Bonjour à tous,

Ma question va peut être paraitre stupide, mais j'ai du mal à trouver après moult recherches comment résoudre ce simple problème :

J'ai une classe qui contient un objet et une map :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
class Salle {
private:
  Personne *personne;
  map<char*,Objet*> *listeObjets;
public:
  bool regarder(Personne*,Objet*);
  void boucle();
};
Le soucis c'est la fonction regarder(), comment je peux faire en sorte d'utiliser cette fonction pour qu'elle agisse sur n'importe qu'elle instance de la classe Objet ?

En gros si je crée plusieurs objets (en alimentant ma map) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Salle::Salle() {
  listeObjets["objet1"] = new Objet(1,"Chaise");
  listeObjets["objet2"] = new Objet(2,"Table");
  listeObjets["objet3"] = new Objet(3,"Armoire");
}
comment je peux faire que je puisse utiliser regarder() avec comme deuxième paramètre une sorte de référence à la classe, un joker, donc que je ne sois pas obligé d'appeler cette fonction pour chaque instance qui se trouvent dans la map ?

Faire quelque chose comme ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
void Salle::boucle() {
while(true) {
  // Ici l'action se déclenche quand la personne regarde un Objet sans savoir duquel il s'agit
  if(regarder(personne,**Objet**)) {
    cout << "La personne regarde un objet" << endl;
  }
}
Au lieu de ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
void Salle::boucle() {
while(true) {
  // Ici l'action se déclenche quand la personne regarde un Objet sans savoir duquel il s'agit
  if(regarder(personne,listeObjets["objet1"])) {
    cout << "La personne regarde un objet" << endl;
  }
  if(regarder(personne,listeObjets["objet2"])) {
    cout << "La personne regarde un objet" << endl;
  }
  if(regarder(personne,listeObjets["objet3"])) {
    cout << "La personne regarde un objet" << endl;
  }
}
Surtout que le nombre d'objet peut varier...

J'espère que j'ai été clair dans l'explication du problème, merci d'avance pour votre aide.