2
我需要写一个Matrix类,它有一个指向双精度数组的指针。我需要以'矩阵方式'打印这些双打。我做了一个引用数组的私有'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;
}
}
感谢您的答案。你知道为什么我的析构函数不起作用,我总是得到错误,他喂养未分配的数据。 (m){ \t delete m; \t} } – GNIUS
@GNIUS很有可能是因为你的拷贝构造函数或赋值操作符做错了某件事(或者忘了做某件事)。你可能想要用你的构造函数的代码发布一个单独的问题,以及产生错误的测试。 – dasblinkenlight