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 : 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;
}
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
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 : 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) ===|
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.