Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- cout<<m1+m2<<endl;
- E0349: No operator << matches these operands type are: std::ostream << Matrix
- Matrix m = m1 + m2;
- cout<<m<<endl;
- ostream& operator<< (ostream &os,Matrix& m)
- {
- if (m.valid)
- {
- os << '|';
- for (int i = 0; i < m.rowNum; i++)
- {
- for (int j = 0; j < m.colNum; j++)
- {
- os << m.matrix[i][j];
- if (j < m.colNum - 1)
- {
- os << ',';
- }
- }
- os << '|';
- }
- }
- else
- {
- os << "invalid matrix!";
- }
- return os;
- }
- Matrix Matrix::operator+ (Matrix &m)
- {
- Matrix* answer = new Matrix(m); //allocating space
- if (valid && m.valid)//if they are both valid
- {
- if (colNum == m.colNum&&rowNum == m.rowNum) //if are from same size
- {
- answer->valid = true; //valid set to be true
- for (int i = 0; i < rowNum; i++) //going over the matrix
- {
- for (int j = 0; j < colNum; j++)
- {
- answer->matrix[i][j] += matrix[i][j]; //adding data
- }
- }
- }
- else
- {
- //clearing data
- delete answer;
- answer = new Matrix();
- }
- }
- else
- {
- //clearing data
- delete answer;
- answer = new Matrix();
- }
- return *answer;
- }
- Matrix Matrix::operator= (Matrix &m)
- {
- int rows = m.rowNum; //putting cols and rows from the data
- int cols = m.colNum;
- if (m.valid)
- {
- matrix = new int*[rows]; //defining the matrix - first allocatin space for rows
- for (int i = 0; i < rows; i++) //now allocating space for cols
- {
- matrix[i] = new int[cols];
- }
- for (int i = 0; i < rows; i++) //now going over the matrix and putting the data in
- {
- for (int j = 0; j < cols; j++)
- {
- matrix[i][j] = m.matrix[i][j];
- }
- }
- }
- //putting the rows and cols data
- rowNum = m.rowNum;
- colNum = m.colNum;
- valid = m.valid; //setting to the right valid type
- return *this;
- }
- class Matrix
- {
- private:
- bool valid;
- int** matrix;
- int rowNum;
- int colNum;
- ostream& operator<< (ostream &os,Matrix& m)
- ostream& operator<< (ostream &os,const Matrix& m)
Add Comment
Please, Sign In to add comment