【问题标题】:Overloading operators in C++ arraysC++ 数组中的重载运算符
【发布时间】:2015-02-17 16:03:18
【问题描述】:

我对 C++ 比较陌生,因此是这个问题。我正在尝试重载 () 运算符以进行数组中的读写操作。这是一个将二维数组映射到一维数组的行优先数组。

这是我为读取操作编写的重载

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

现在我需要编写一个写重载,在读重载返回的位置插入一个双精度值。

//overloading write operator
    double& operator()(double d){

    }

我该怎么做。任何帮助表示赞赏。

【问题讨论】:

  • "...在那个位置插入一个双精度值" 什么位置?您的写操作符只定义一个双精度值,而不是一个位置。
  • @zenith 在读重载返回的位置
  • 完全一样,但是去掉consts,你可以说data(x,y) = 0;
  • @molbdnilo 但在写入重载中未定义行和列。我没有得到正确的签名。
  • 顺便说一句,您在现有代码中将 const 放置在错误的位置,成员修饰符 (cv-qualifier-seq) 位于参数列表之后。

标签: c++ arrays operator-overloading


【解决方案1】:

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

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

如此使用

array(2,3) = 42;

【讨论】:

    猜你喜欢
    • 2016-08-30
    • 1970-01-01
    • 2018-11-27
    • 2013-05-15
    • 2015-09-14
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多