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