ошибка: передача 'const std :: vector <int>' в качестве аргумента 'this' для void std :: vector <_Tp, _Allo c> :: push_back (const value_type &) - PullRequest
1 голос
/ 12 января 2020

Я не могу поместить sh элемент в вектор.

void Addvec(const vector<int> &v)
{
    int num{};
    cout<<"Enter the number you want to add";
    cin>>num;
    v.push_back(num);
    cout<<"Added"<<endl;
}

В чем может быть проблема с этим кодом?

Ответы [ 2 ]

3 голосов
/ 12 января 2020

Функция:

void Addvec(const vector<int> &v)

заявляет: я беру ссылку на вектор констант целых, поэтому я гарантирую, что я не буду его изменять.

Но позже вы попробуйте ввести в него sh целое число, изменив вектор:

v.push_back(num);

Это нарушает постоянную гарантию того, что функция сделана.

Чтобы исправить ошибку, удалите const из аргумента или не изменяйте вектор в функции.

G CC выдает следующую ошибку:

ошибка: передача 'const std :: vector Аргумент 'as' this 'отбрасывает квалификаторы [-fpermissive]

Что немного более понятно, чем то, что не так с вашим кодом.

0 голосов
/ 12 января 2020

Проблема в const.

Правильный код следующий:

void Addvec(vector<int> &v)
{
    int num{};
    cout<<"Enter the number you want to add";
    cin>>num;
    v.push_back(num);
    cout<<"Added"<<endl;
}

В общем случае Константа - это то, что не меняется, и в вашем случае вы изменяете вектор в функции.

Я оставляю вам полезную ссылку: постоянное ключевое слово

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...