C++里面怎么用运算符[]实现调用[i][j]时给类里面的数组a[i][j]赋值啊?

class Matrix //定义一个矩阵类
{
private:
float **m; //二维数组存矩阵的数字;
int x,int y; //表示该矩阵x行y列;
public:
Matrix(int x,int y);//构建函数,表示x行y列的矩阵;
Matrix operator []()
}
要实现当对一个Matrix类ai做运算ai[i][j]=n时,表示将ai.m[i][j]=n;
求高人指点,Matrix operator[]该怎么定义,怎么写
最新回答
西羊夕下

2024-06-22 12:39:26

不是Matrix operator[],而是 float*& operator [](int i) 返回一个float地址的引用就行了
例子如下,不过没有析构函数

#include<iostream>
using namespace std;
class Matrix //定义一个矩阵类
{
private:
float **m; //二维数组存矩阵的数字;
int x,int y; //表示该矩阵x行y列;
public:
Matrix(int x,int y) //构建函数,表示x行y列的矩阵;
{
m=new float*[x];
for(int i=0;i<x;i++)
{
*m=new float[y];
}
}
float*& operator [](int i)
{
return *(m+i);
}
};
int main()
{
Matrix ai(3,4);
ai[0][1]=1.23;
cout<<ai[0][1]<<endl;
}
词家小生

2024-06-22 05:58:55

没太懂你的意思。。这个应该是对[]运算符重载吧 赋予它你要说的功能就行了
追问
就是对[]运算符重载啊
当调用[]时,比如ai是Matrix类下的一个项目;
当主函数里写ai[i][j]=x时,就相当于ai.m[i][j]=x;也就是通过[]直接给这个矩阵类的(i,j)元素赋值了
寒烟雾柳

2024-06-22 03:04:19

就用一个for循环写啊~
追问
不是直接赋值  取[][]运算的是类   不是里面的数组