Bonjour,

Je souhaite réaliser des codes pouvant créer des ensemble de int et des ensemble de Combinaison, mes Combinaison étant une classe par exemple composé de int

Ma classe Ensemble a pour attribut :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
     int taille; 
         type* tab;
Ma classe Combinaison pour attribut :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 unsigned int nbElts;
        int* elts;
        unsigned int rapport;
J'ai d'autres méthodes de classe etc,...

Mon accesseur au tableau de la classe ensemble a pôur prototype :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
const type* obtenirElements(unsigned int& t) const;
Mon accesseur aux elements de la classe combinaison a pour prototype :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
const int* Combinaison::lireElts(unsigned int& N) const
Je dispose d'une classe bandit qui a pour attribut :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
	Ensemble<Combinaison> CG;
	Ensemble<int> CS;
Ainsi j'ai aussi des patrons de fonctions ,...

Dans ma classe bandit je souhaite Comparer une combinaison avec toutes les combinaisons de CG :
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
unsigned int rapport,nbr,nbr_2;
	if(CG.appartientA(C_alea))
	{
	cout << "vous avez gagné ";
 
	const Ensemble<Combinaison>*tab_CG = lireEnsembleCG();
	const Combinaison* CG_tab_2;
	CG_tab_2=tab_CG->obtenirElements(nbr);
 
		for(unsigned int i=0;i<nbr;i++)
		{
			if(CG_tab_2[i]==C_alea)
			{rapport=CG_tab_2[i].lireRapport();}
 
	//rapport=t.lireRapport();
		}
	return 1;}
J'avais préalablement effectué ma surcharge d'opérateur de la classe Combinaison pour pouvoir comparer des ensemble et des combinaisons:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
	bool Combinaison::operator ==(const Combinaison& C1)	
	{int i=0,k=0;
		if (nbElts!= C1.nbElts)
			return 0;
		for(i=0; i<nbElts; i++)
		{
			if(elts[i]!=C1.elts[i])
			 return 0;
		}
		return 1;
	}

Ma question est dans mon code de la classe Bandit ou j'effectue CG_tab_2[i]==C_alea et là j'ai un erreur de compilation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
/home/me/POO/TP4/Bandit.cpp:84:20: error: passing ‘const Combinaison’ as ‘this’ argument of ‘bool Combinaison::operator==(const Combinaison&)’ discards qualifiers [-fpermissive]
Je voudrais enfait accéder à l'indice pour lequel C_alea est égale à une combinaison de CG_tab car vu mon opérateur == mon programme se contente de dire si oui ou non C_alea est égale à une combinaison de l'ensemble<Combinaison>
Comment faire ?


Merci d'avance

Lucile