我已经重载了运算符 [ ] 以启用元素访问。
定义
double Matrix::operator[ ](const & int i){
return data[i]; // data[] is a member array: thrust:: device_vector
}
用法
Matrix m = ... // initialize
std::cout << m[3] << std::endl;
但现在我想按索引访问元素,以便为其分配新值。
用法
m[3] = 0.;
我了解运算符重载函数的返回值必须是左值。我想我应该返回一个参考,但不确定这是如何完成的。谢谢!
编辑
现在我将定义更改为 double &,但它仍然抱怨:
error: initial value of reference to non-const must be an lvalue
数组引用一个thrust::device_vector,可以通过索引赋值:
Thrust::device_vector<double> M(10);
M[3] = 0.;