非成员函数需要通过指针输出一个数组
Non member function needs to print out an array via pointer
我需要写一个矩阵类,它有一个指向双精度数组的指针。我需要在"矩阵方式"上打印这些副本。我做了一个私有的'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
的所有私有成员,包括指针成员m
和int
成员size
。您可以在操作符
std::ostream& operator<<(std::ostream& out, const Matrix& matrix) {
double *a = matrix.m;
int s = matrix.size;
...
// Do printing here
}