gpt4 book ai didi

c++ - 重载 = 行为类似于矩阵的类的运算符

转载 作者:行者123 更新时间:2023-11-30 00:36:34 24 4
gpt4 key购买 nike

<分区>

我有一个类似于矩阵的类模板。所以用例是这样的:

Matrix matrix(10,10);
matrix[0][0]=4;
//set the values for the rest of the matrix
cout<<matrix[1][2]<<endl;

当我直接在构造函数中设置值时,效果很好,但是当我想使用 matrix[x][y]=z; 时,我得到了 error: lvalue required as赋值的左操作数。我假设,我必须重载 = 运算符。尽管如此,我整个晚上都在尝试,但我没有找到如何实现它。谁能好心告诉我如何为我的代码重载 = 运算符,使其为该矩阵赋值?

代码:

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <sstream>

using namespace std;

class Matrix {
public:

Matrix(int x,int y) {
_arrayofarrays = new int*[x];
for (int i = 0; i < x; ++i)
_arrayofarrays[i] = new int[y];

// works here
_arrayofarrays[3][4] = 5;
}

class Proxy {
public:

Proxy(int* _array) : _array(_array) {
}

int operator[](int index) {
return _array[index];
}
private:
int* _array;
};

Proxy operator[](int index) {
return Proxy(_arrayofarrays[index]);
}

private:
int** _arrayofarrays;
};

int main() {
Matrix matrix(5,5);

// doesn't work :-S
// matrix[2][1]=0;

cout << matrix[3][4] << endl;
}

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