我正在阅读 The C++ Programming Language, 4th Edition (Bjarne Stroustrup)关于references。
他有以下代码示例:
void f (const vector<double>& v){
double d1 = v[1];
v[2] = 7;
v.push_back(d1);
}
我的问题是:由于v
作为const传递,我们如何在函数的第二和第三语句中更改v
?
我尝试编译代码但不起作用:
错误:分配只读位置
那我在这里错过了什么?我怀疑是Bjarne犯了一个错误:D
由于
答案 0 :(得分: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
}
所以它可能已经修复了下一次打印。