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 :
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 ?
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(); };
En gros si je crée plusieurs objets (en alimentant ma map) :
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 ?
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"); }
Faire quelque chose comme ça :
Au lieu de ç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; } }
Surtout que le nombre d'objet peut varier...
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; } }
J'espère que j'ai été clair dans l'explication du problème, merci d'avance pour votre aide.
Partager