2016-04-17 42 views
3

我在看The C++ Programming Language, 4th Edition(由Bjarne Stroustrup)約爲這個例子如何在Bjarne Stroustrup的C++編程語言中起作用?

他有下面的代碼示例:

void f (const vector<double>& v){ 
    double d1 = v[1]; 
    v[2] = 7; 

    v.push_back(d1); 
} 

我的問題是:由於v作爲常量通過我們怎樣才能在函數第二和第三聲明的更改v

我試圖編譯的代碼,它不工作:

error: assignment of read-only location

那我在這裏失蹤?我懷疑這是誰比亞犯了一個錯誤:d

感謝

+0

你確定你專注於上例給出的上下文嗎? –

+0

是的,我很確定! :) 通常他標記了一個錯誤的代碼與評論說錯誤或什麼的。不是這次 –

+1

這只是一個簡單的錯誤。就這樣。 –

回答

7

更新後的版本具有以下:

void f(vector<double>& v) 
{ 
    double d1 = v[1]; // copy the value of the double referred to by v.operator[](1) into d1 
    v[2] = 7; // place 7 in the double referred to by the result of v.operator[](2) 
    v.push_back(d1); // give push_back() a reference to d1 to wor k with 
} 

所以這可能是固定在未來印刷。

相關問題