Bonjour,

j'ai un soucis avec le mot clé const. J'ai des méthodes de validation qui prennent une autre classe en paramètre. Donc comme d'habitude je met un (const classA& _param) en argument.

Ensuite j'appelle des méthodes de validation de la classe passée en argument et j'obtiens un joli message d'erreur signifiant qu'il n'y a pas de méthode associé à la classe const.

Ce que je ne comprend pas c'est que le mot-clé const permet au compilateur d'optimiser, car il sait que la classe ne sera pas modifié. Et je ne fais qu'un get sur un membre.

Voila un code d'example :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
class Validator // .h
{
	public:
		Validator();
		virtual ~Validator();
 
		bool is_valid(const Packet& _packet);
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
//.cpp
 
bool Validator::is_valid(const Packet& _packet)
{
	switch(_packet.getType()) // erreur vient d'ici
	{
		// blablabla
	}
}

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
class Packet // .h
{
	public:
		Packet();
		Packet~Packet ();
 
		char getType() {return m_type;}
 
	private:
		char m_type;
}

L'erreur :
error: no matching function for call to 'Packet::getType() const'
Merci de votre aide.