gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 06:40:38 24 4
gpt4 key购买 nike

这是我的问题:

我有两个类 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com