Code:#pragma once #include <vector> #include <string> #include <sstream> #include <deque> #include <iostream> #include <iomanip> using namespace std; class Matrix { private: string _name; int _row; int _col; double ** _mat; public: //Constructors Matrix(); Matrix::Matrix(const Matrix &m); //Deconstructor ~Matrix(); //get functions for variables string getName(void); int getRow(void); int getCol(void); double ** getPointer(void); //set functions for variables void setName(string name); void setPointer(double ** mat); void setRow(int row); void setCol(int col); //disp matrix void dispMatrix(void); //clear matrix void clear(void); //operators needed for overloading Matrix & Matrix::operator = (const Matrix & mMatrix); };Code:#include "Matrix.h" //default constructor Matrix::Matrix() { _name = "Unknown"; _row = 0; _col = 0; _mat = NULL; } //copy constructor call Matrix::Matrix(const Matrix &m) { _name = m._name; _row = m._row; _col = m._col; _mat = m._mat; } //destructor call Matrix::~Matrix() { delete _mat; } //returns the name of a matrix string Matrix::getName(void) { return _name; } //returns the number of rows int Matrix::getRow(void) { return _row; } //returns the number of columns int Matrix::getCol(void) { return _col; } //returns the pointer of data for a matrix double ** Matrix::getPointer(void) { return _mat; } //this sets the name of the string passed to matrixs name void Matrix::setName(string name) { _name.clear(); _name = name; } void Matrix::setPointer(double ** mat) { _mat = mat; } //set the row to row void Matrix::setRow(int row) { _row = row; } //set the col to col void Matrix::setCol(int col) { _col = col; } //this displays the matrix to cout void Matrix::dispMatrix(void) { int i,j; cout << _name << " =" << endl << "\t"; for(i=0;i<_row;i++) { for(j=0;j<_col;j++) { cout << _mat[i][j] << "\t"; } cout << endl; } cout << endl; } //clear the current matrix void Matrix::clear(void) { _name = ""; _row = 0; _col = 0; _mat = NULL; } //assignment opererator overloading Matrix & Matrix::operator = (const Matrix & mMatrix) { int i,j; _row = mMatrix._row; _col = mMatrix._col; _name = mMatrix._name; _mat = new double *[_row]; for(i=0;i<_row;i++) { _mat[i] = new double [_col]; for(j=0;j<_col;j++) { _mat[i][j] = mMatrix._mat[i][j]; } } return *this; }Code:// Check for '[' --> assigning new values to matrix if (c == '[') { if (pos == -1) { getline(cin, restOfLine); setCheck = str2matrix(restOfLine,&temp); switch(setCheck) { case -1: cout << "Improperly formatted matrix" << endl; break; case -2: cout << "Improperly formatted matrix" << endl; break; case -3: cout << "Dimensions don't match" << endl; break; case -4: cout << "Improperly formatted matrix" << endl; break; case 1: temp.setName(cmd); mList.push_back(temp); // errors here when i push a 2nd time break; } } else { getline(cin, restOfLine); setCheck = str2matrix(restOfLine,&temp); switch(setCheck) { case -1: cout << "Improperly formatted matrix" << endl; break; case -2: cout << "Improperly formatted matrix" << endl; break; case -3: cout << "Dimensions don't match" << endl; break; case -4: cout << "Improperly formatted matrix" << endl; break; case 1: mList[pos] = temp; break; } } }Alright the above code is my entire class header and implementation. Im not going to post all the main code because its too big so above is where i am getting errors. I have heap errors and other memory problems.Code://string to matrix form int str2matrix(string restOfLine, Matrix * temp) { int i,j; string tempString; deque<string> sList; istringstream tempNumString; double tempDBL; int row = 0; int col = 0; int lastCol = 0; double ** _mat; if(*restOfLine.begin() == '[' && restOfLine.back() == ']') { for(string::iterator sIT = restOfLine.begin(); sIT != restOfLine.end(); ++sIT) { switch(*sIT) { case '[': //return a -1 if the open bracket isnot at the beginning if(distance(restOfLine.begin(), sIT) != 0) return -1; break; case ']': //return a -2 if the closed bracket is not at the end if(distance(restOfLine.end(), sIT) == 1) return -2; break; case ' ': //keep on adding to num of columns while(*sIT == ' ') { ++*sIT; } break; case ';': if(lastCol == 0) { row ++; lastCol = col; col = 0; } else if(lastCol == col) { row ++; col = 0; } else { //this returns a -3 for an error on invalid number of columns return -3; } break; default: if(*sIT >= 48 && *sIT <= 57) { while(*sIT >= 48 && *sIT <= 57) { tempString.push_back(*sIT); ++sIT; } --sIT; sList.push_back(tempString); tempString.clear(); col ++; } else { //returns -4 for error on not a number but a character return -4; } } } row++; _mat = new double *[row-1]; for(i=0;i<row;i++) { _mat[i] = new double [col-1]; for(j=0;j<col;j++) { tempNumString.str(sList.front()); tempNumString >> tempDBL; sList.pop_front(); tempNumString.clear(); _mat[i][j] = tempDBL; } } temp->setPointer(_mat); temp->setRow(row); temp->setCol(col); //return a 1 for completed return 1; } else return -2; }

The user should input something like the following

Code:a = [ 1 2 3; 4 5 6]