c++ - 我们可以将引用绑定(bind)到函数的返回值吗?

标签 c++

这是我的问题:

我有两个类 VectorMatrix,我定义了两个函数,一个用于计算 vector 和矩阵的乘法,另一个用于分配新 vector 的值。

代码如下:

  file: Matrix.cpp
  Vector Matrix::operator*(const Vector& v)const {
      assert(v.length == numRows);
      Vector temp(v.length);
      for (int j = 0; j < numCols; j++)
          for (int k = 0; k < v.length; k++)
              temp.contents[j] += v.contents[k] * contents[k][j];
      return temp;
  };

  file: Vector.cpp
  Vector& Vector::operator=(Vector& v){
      assert(v.length == length);
      if (&v != this) {
          for (int i = 0; i < length; i++)
              setComponent(i, v.contents[i]);
      }
      return *this;
   };

假设我已经很好地定义了一个 4*4 矩阵 m1 和一个 1*4 vector v1 这是我在 main() 函数中的部分代码,

  file: main.app
  Vector v2(4);
  v2 = m1 * v1;

可以编译但是会遇到问题。

谁能给我提示如何处理这个问题?是因为我试图将引用与函数的返回值绑定(bind)吗?非常感谢!

最佳答案

在您的代码中,您定义了这样的赋值运算符 Vector& Vector::operator=(Vector &v)。但它应该像 Vector& Vector::operator=(Vector const & v)。原因是 Vector &v 引用了一个 lvalue 引用。但是 m1 * v1 返回一个 rvalue

关于c++ - 我们可以将引用绑定(bind)到函数的返回值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26046001/

相关文章:

c++ - fread 可以是不可租的吗?

c++ - ifstream.eof() 在 C++ 中未评估为真

c++ - gflags 参数提取在 Debug模式下不起作用 (C++)

c++ - 更改 cv::Mat 图像的类型(解释)

c++ - pimpl 习语如何减少依赖性?

c++ - 谷歌测试比较指针数组的内容

c++ - 为什么 const int& 可以绑定(bind)到 int?

c++ - 在 Windows 上安装 wxWebConnect 时遇到问题

c++ - 统一 block 集合中的连续 block 的算法

c++ - std::vector::erase() 是否真的在删除点使迭代器无效?