Вы не должны быть в состоянии изменить это, это своего рода смысл const.В основном он используется для передачи параметров функциям / методам и обеспечения гарантии того, что он не будет изменен.
Если вам действительно нужно изменить его, есть два варианта:
- Создайте копию вектора и измените ее вместо этого.
- Удалите константу с помощьюconst_cast.
Создание копии
const std::vector<std::string>& foo;
std::vector<std::string> bar(foo);
Удаление const с помощью const_cast
Я настоятельно рекомендую не использовать это, но, возможно, это вариант.
Предполагая, что строковому вектору предоставляется постоянная защита перед передачей в качестве параметра методу или функции, и что базовый тип на самом деле не const
, тогда можно сделать следующее:
typedef std::vector<std::string> string_vector;
void f(const string_vector& foo) {
const string_vector& foo;
const_cast<string_vector>(foo).push(firstEntry);
}
int main() {
string_vector foo();
f(foo);
}