Bonjour a tous,

Je rencontre actuellement le problème suivant à la compilation :
error C2662: 'toto::zoneindex::replace' : impossible de convertir un pointeur 'this' de 'const toto::zoneindex' en 'toto::zoneindex &'
1> La conversion perd les qualificateurs
Apparemment je tente de modifier une variable const mais je ne vois pas où elle est const en fait.

Merci par avance de m'éclaircir.

Mon code :
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
 
class toto
{
public:
	struct zoneindex
	{
		int zone1;
		int zone2;
 
		zoneindex(int z1, int z2)
		{
			assert(z1 != z2);
			this->zone1 = z1;
			this->zone2 = z2;
		}
 
		void replace( int oldv, int newv)
		{
			if(this->zone1==oldv)
				this->zone1=newv;
			if(this->zone2==oldv)
				this->zone2=newv;
		}
	};
 
	struct zonevalue
	{
		int vertex;
		double z;
	};
 
	typedef std::map<zoneindex, zonevalue> myzmap;
 
	void f1( )
	{
		myzmap zmap;
 
		this->f2(zmap);
	}
 
	void f2( myzmap & zmap )
	{
		int i,j;
 
		BOOST_FOREACH(myzmap::value_type & v, zmap)
		{
			v.first.replace(i, j); //error C2662
		}
	}
};