在C++数组中重载运算符

3
我很新手C ++,因此有个问题。我正在尝试为数组中的读取和写入操作重载()运算符。这是一个将二维数组映射到一维数组的行主要数组。以下是我为读取操作编写的重载:
//overloading read operator
    const double& operator()const(int n, int m){
      return arr_[n*column+m];
    }

现在我需要编写一个重载函数,将一个双精度浮点数插入到读取重载函数返回的位置。
//overloading write operator
    double& operator()(double d){

    }

我该如何做到呢?感谢任何帮助。


“...在该位置插入一个双精度值”是指哪个位置?您的写操作符只定义了一个双精度值,而没有定义位置。 - emlai
@zenith 在 read 重载返回的位置 - user4557113
做完全相同的事情,但删除“consts”,你可以说“data(x,y) = 0;”。 - molbdnilo
@molbdnilo 但是在写入重载中,行和列没有被定义。我没有得到正确的签名。 - user4557113
顺便说一句,你在现有代码中将 const 放错了位置,成员修饰符(cv-qualifier-seq)应该在参数列表之后。 - Ben Voigt
1个回答

5

这个重载函数本身不会插入任何东西,它将返回一个(非const)引用,您可以使用该引用来分配给数组元素。该重载函数与您的const重载函数相同(您仍然需要另外一个函数来访问常量对象),但没有任何const修饰符:

double& operator()(int n, int m){
  return arr_[n*column+m];
}

使用如下
array(2,3) = 42;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接