Bonjour,

j'aimerais utilis� std::set, mais j'ai quelques ennuis ...


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
// ------
class SCImports
{
public:
   SCImports(const std::string & etat1, const std::string & etat2)
      : nom1(etat1),nom2(etat2)
   {
   }
   std::string nom1;
   std::string nom2;
};
 
// ------
// déclaration dans une autre classe Test
std::set<SCImports>                 listeSCImports;
 
// ------
// utilisation dans cette autre classe Test
 
((std::set<SCImports>) listeMaClasse).insert((SCImports)classe);
Si je compile la classe Test, j'obiens de visual 2002 cette erreur :

C:\Program Files\Microsoft Visual Studio .NET\Vc7\include\functional(139): error C2676: binary '<' : 'const SCImports' does not define this operator or a conversion to a type acceptable to the predefined operator

d'o� ma question, est-ce que je dois surcharger l'op�rateur "<" ?
Est-ce que �a ne devrait pas plut�t �tre l'op�rateur "==" pour d�terminer si la cl� (l'�l�ment � ins�rer) est d�j� pr�sent dans la "liste" set ?

Si je dois surcharger l'op�rateur comment je fais avec ma classe qui a seulement 2 string en attribut, et plus int�ressant comment je fais si c'est une classe qui a plein d'attributs ?

Merci de vos r�ponses, j'esp�re avoir �t� clair. Cependant, il se peut que je n'ai pas bien compris le fonctionnement de set (qui pour moi est une sorte de liste de cl� donc impossible d'avoir 2 fois la m�me cl� dans set), si c'est le cas merci de me donner d'autres informations...

En passant, un lien int�ressant sur les containers :

http://www.mines.u-nancy.fr/~tombre/...olyCpp008.html

Big. K