Как мне вставить обратно в вектор с указателем констант - PullRequest
1 голос
/ 16 сентября 2010

привет, у меня ошибка со следующим кодом: в моем файле h я получил следующий вектор:

vector<Vehicale*> m_vehicalesVector;

, а в моем файле cpp я получил следующую функцию:

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

кажется, что const Vehicale* vehicaleToAdd создает проблему, когда я изменяю его на неконстантную переменную, которая работает.заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 16 сентября 2010

m_vehicalesVector.push_back() требует Vchicale* в качестве параметра, в то время как const Vehicale* задано.Компилятор отрицает это, потому что const не может быть удалено без вывода сообщений.

Изменение vector<Vehicale*> m_vehicalesVector на vector<const Vehicale*> m_vehicalesVector может решить эту проблему.

1 голос
/ 16 сентября 2010

Вы не можете сохранить константный указатель в векторе неконстантных указателей, так как затем вы можете использовать неконстантный указатель для изменения объекта, на который указывает константный указатель.

Вы можете сделать это вектором константных указателей:

vector<const Vehicle*> m_vehiclesVector;

или передать неконстантный указатель.

Вы также можете отбросить константу:

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

но я бы настоятельно не рекомендовал такой подход.

...