簡體   English   中英

錯誤:傳遞&#39;const std::vector<int> &#39; 作為 &#39;void std::vector&lt;_Tp, _Alloc&gt;::push_back(const value_type&amp;) 的 &#39;this&#39; 參數

[英]error: passing 'const std::vector<int>' as 'this' argument of 'void std::vector<_Tp, _Alloc>::push_back(const value_type&)

我無法將元素推送到向量中。

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;
}

這段代碼可能有什么問題?

功能:

void Addvec(const vector<int> &v)

狀態:我正在引用一個 int 常量向量,因此我保證我不會修改它。

但稍后,您嘗試將一個整數推入其中,修改向量:

v.push_back(num);

這違反了函數所做的 const 保證。

要修復錯誤,請從參數中刪除const ,或者不要修改函數中的向量。

GCC 給出以下錯誤:

錯誤:將“const std::vector<int>”作為“this”參數傳遞會丟棄限定符 [-fpermissive]

你的代碼有什么問題更清楚一點。

問題是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;
}

一般而言,常量是不會改變的,在您的情況下,您可以修改函數中的向量。

我給你留下了一個有用的鏈接: const 關鍵字

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM