2010-09-15 5 views
1

bonjour j'ai une erreur avec le code suivant: dans mon dossier h je suis le vecteur suivant:Comment insérer de nouveau à un vecteur avec un pointeur const

vector<Vehicale*> m_vehicalesVector; 

et dans mon fichier cpp je suis la fonction suivante:

void Adjutancy:: AddVehicale(const Vehicale* vehicaleToAdd) 
{ 
    m_vehicalesVector.push_back(vehicaleToAdd); 
} 

semble que le const Vehicale* vehicaleToAdd rend le problème quand je change à une variable non const cela fonctionne. merci d'avance.

+0

Je n'arrive pas à lire votre message. –

+0

j'ai compris mon erreur ... j'aurais dû définir le vecteur comme ce vecteur m_vehicalesVector; –

Répondre

3

m_vehicalesVector.push_back() nécessite Vchicale* comme paramètre, tandis que const Vehicale* est indiqué. Le compilateur nie cela parce que const ne peut pas être supprimé silencieusement.

Modifier vector<Vehicale*> m_vehicalesVector à vector<const Vehicale*> m_vehicalesVector peut résoudre ce problème.

1

Vous ne pouvez pas stocker un pointeur const dans un vecteur de pointeurs non const, car vous pouvez ensuite utiliser le pointeur non const pour modifier l'objet pointé par le pointeur const.

Vous pouvez faire un vecteur de pointeurs const:

vector<const Vehicle*> m_vehiclesVector; 

ou passer un pointeur non-const.

Vous pouvez également rejettera const-ness:

m_vehiclesVector.push_back(const_cast<Vehicle *>(vehicleToAdd)); 

mais je déconseillons fortement cette approche. Comme suit: