Les const et les pointeurs, un mauvais mélange ?
Bonjour,
J'essaye de mettre en place un pointeur dont ce sur quoi il pointe est constant. Voici la méthode d'une de mes classes (UnitModel) qui retourne ce fameux pointeur :
Code:
1 2 3 4 5 6 7
| WeaponModel const * UnitModel::getWeaponModel(size_t index)
{
if(index < m_weapon_models.size())
return m_weapon_models[index];
else
return 0;
} |
J'appelle cette méthode dans un constructeur :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| UnitInstance::UnitInstance(UnitModel const * model) : m_model(model)
{
for(size_t i = 0; i<m_weapons.size(); ++i)
{
WeaponModel const * weaponmodel = m_model->getWeaponModel(i);
if(weaponmodel != 0)
m_weapons[i] = new WeaponInstance(weaponmodel);
else
m_weapons[i] = 0;
}
} |
Cependant, lors de la compilation, je rencontre le message d'erreur suivant :
Code:
1 2 3
| C:\Users\Romain\Documents\Projets\Tankontrol\UnitInstance.cpp||In constructor 'UnitInstance::UnitInstance(const UnitModel*)':|
C:\Users\Romain\Documents\Projets\Tankontrol\UnitInstance.cpp|13|error: passing 'const UnitModel' as 'this' argument of 'const WeaponModel* UnitModel::getWeaponModel(size_t)' discards qualifiers|
||=== Build finished: 1 errors, 0 warnings (0 minutes, 1 seconds) ===| |
La ligne 13 correspond ici à la ligne 5 du second extrait de code (le constructeur).
J'ai lu sur différents forums que cette erreur était relative au const (tentative de modifier un objet constant notamment) mais je ne vois pas l'erreur dans mon code.
Des idées ? :?
Merci d'avance,
darkrojo.