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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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