Récupérer l'instance d'une classe à partir de la valeur de l'attribut unique de cette dernière
Bonjour,
Peut-on trouver à quelle instance d'une classe appartient un attribut dont nous disposons de la valeur et qui est unique (une sorte d'Id)?
Je m'explique: j'ai 2 classes Obj et tabObj
B]Obj[/B] est utilisée dans un attribut de tabObj sous forme de tableau dynamique de pointeur constant à Obj.
Mon souci est que je n'arrive pas à trouver comment implémenter une méthode
Code:
bool enConflit(int id,vector <int> tabId);
comme suit:
Cette méthode devra retourner true si le Obj identifié par le premier paramètre est en conflit avec un Obj de tabId identifié par le 2ème paramètre: ) ; et false s’il n’y aucun conflit ;
Cette méthode retournera false si le Obj identifié par le premier paramètre ne fait pas partie tabObj (aucun des Obj de tabObj n’a cet identificateur) ; les Obj de la sélection qui ne font pas partie de tabObj seront ignorés.
La classe Obj a sa propre méthode enConflit et qui retourne true si l'instance OBJ en cours et celle qui est passée en paramètre ont le même nom et le même lieu.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
| #include <iostream>
#include <string>
#include <vector>
using namespace std;
class Obj
{
private:
int id_;
string nom_;
string lieu_;
public:
Obj(int id, const string & nom, const string & lieu)
: id_(id), nom_(nom), lieu_(lieu)
{
}
int getId() const
{
return id_;
}
const string & getNom() const
{
return nom_;
}
const string & getLieu() const
{
return lieu_;
}
bool enConflit (Obj o)
{
if (this->getLieu() == o.getLieu() && this->getNom() == o.getNom() )
{
return true;
}
else
{
return false;
}
}
};
class TabObj
{
private:
vector < const Obj* > objets;
public:
void add_objet (Obj const & o)
{
objets.push_back(&o);
}
const vector < const Obj* > & TabObjets () const
{
return objets;
}
bool enConflit(int id,vector <int> tabId)
{
bool enConflit;
return enConflit;
}
};
int main()
{
Obj o1(1,"Film","Paris");
Obj o2(2,"Journal", "Moscou");
Obj o3(3,"Film","Paris");
TabObj tObj;
tObj.add_objet(o1);
tObj.add_objet(o2);
for (const Obj * obj : tObj.TabObjets())
{
cout << obj->getId() << ": " << obj->getNom() << " -" << obj->getLieu() <<endl;
}
return 0;
} |
Merci pour votre aide.
Cordialement,
IT