看到这个网上,看起来就像结构,我想在我的代码使用,但我希望扩大这一做* 20的矩阵操作to20 - ,/,*我有一个基类,电气类...
{C}| carlmackclass Matrix
{
public:
Matrix(float m11=0, float m12=0, float m21=0, float m22=0);
Matrix(const Matrix &m);
virtual Matrix() {delete[] d;};
Matrix operator+(const Matrix &m) const;
Matrix& operator=(const Matrix &m);
float &c(int i, int j) const {return d[2*(i-1)+(j-1)];};
private:
float *d;
};
class DiagonalMatrix : public Matrix
{
public:
DiagonalMatrix() {};
DiagonalMatrix(float d1, float d2) {c(1,1) = d1; c(2,2) = d2;};
};
Matrix::Matrix(float m11, float m12, float m21, float m22)
{
d = new float[2*2];
c(1,1)=m11; c(1,2)=m12; c(2,1)=m21; c(2,2)=m22;
}
Matrix::Matrix(const Matrix &m)
{
d = new float[2*2];
for (int i=0 ; i<2 ; i++)
for (int j=0 ; j<2 ; j++)
c(i,j) = m.c(i, j);
}
Matrix Matrix::operator+(const Matrix &q) const
{
Matrix r;
for (int i=1 ; i<=2 ; i++)
for (int j=1 ; j<=2 ; j++)
r.c(i,j) = c(i,j) += q.c(i,j);
return r;
}
Matrix& Matrix::operator=(const Matrix &q)
{
for (int i=1 ; i<=2 ; i++)
for (int j=1 ; j<=2 ; j++)
c(i,j) = q.c(i,j);
return *this;
}