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 :
J'appelle cette méthode dans un constructeur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
Cependant, lors de la compilation, je rencontre le message d'erreur suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } }
La ligne 13 correspond ici à la ligne 5 du second extrait de code (le constructeur).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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) ===|
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.
Partager