Bonjour,
J'ai impl�ment� une classe encapsulant un std::vector et un mutex, car je souhaitait pouvoir utiliser cette classe � partir de diff�rent thread.
Ayant besoin d'acc�der � mon vector en lecture, j'ai fait les getters ad�quat, � l'origine, une m�thode constante. Mais � cause du mutex (un pthread_mutex_t), le compilateur me dispute de ne pas respecter mon "const".
La solution est soit :
- d'enlever le const, mais �a peut produire des effets n�fastes dans le reste du code, utilisant mon encapsulation
- utiliser le mot cl� mutable
Il m'a sembl� judicieux d'utiliser mutable dans ce cas l�, mais, toutefois ce mot cl� me laisse un arri�re gout am�re. On indique que l'on a une m�thode const, mais elle n'est pas totalement const car on utilise une variable que l'on modifie, mais c'est ok car c'est mutable
Je sais aussi que les sp�cifications const permettent aux compilateurs de faire des optimisations. Du coup, qu'est ce qui se passe du cot� du compilateur, si j'utilise le mot cl� mutable ? Vais-je perdre toutes les optimisations ? Quel est l'impact de ce mot cl� ?
Partager