非成员函数需要通过指针输出一个数组

Non member function needs to print out an array via pointer

本文关键字:数组 一个 输出 指针 函数 成员      更新时间:2023-10-16

我需要写一个矩阵类,它有一个指向双精度数组的指针。我需要在"矩阵方式"上打印这些副本。我做了一个私有的'double *m',它引用了一个数组(参见构造函数)。现在,算子<<是一个非成员函数,我不知道如何打印出指针指向的数组。

 class Matrix {
 private:
     double * m;
     int size;
 public:
     Matrix(const int rows = 2, const int columns = 2);
     Matrix(const Matrix& matrix);
     Matrix& operator=(const Matrix& matrix);
     double * getM() const {return m;}
     friend const Matrix& operator *(int x, const Matrix& m);
     friend const Matrix& operator *(const Matrix& matrix,int x);
     friend std::ostream& operator<<(std::ostream& out, const Matrix& matrix);
     int getSize() const {return size;}
     void setSize(const int s){size = s;}
     virtual ~Matrix();
     };
    Matrix::Matrix(const int rows, const int columns) {
           size = rows * columns;
           m = new double[size];
           for(int i = 0; i < size; i++){
            *(m+(i+1)) = i+1;
           }
   }

由于您已经将operator <<声明为Matrix类的friend,操作符可以访问matrix的所有私有成员,包括指针成员mint成员size。您可以在操作符

的实现中充分利用它们。
std::ostream& operator<<(std::ostream& out, const Matrix& matrix) {
    double *a = matrix.m;
    int s = matrix.size;
    ...
    // Do printing here
}
相关文章: