Below codes will show, when run, that the private member variables (MaxRows, MaxCols) are changing by the time function input is called. Could you please help what is going on?
As you can see the first constructor generates correct display of private variables. However the function will break them apart.
#include <iostream>
#include <string>
#include <fstream>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <vector>
#include <windows.h>
#include <cstring>
#include <cctype>
#include <iomanip>
#include <algorithm>
#include <sstream>
using namespace std;
class TwoD
{
private:
int MaxRows;
int MaxCols;
double** outerArray;
public:
TwoD(int MaxRows, int MaxCols)
{
outerArray = new double *[MaxRows];
for (int i = 0; i < MaxRows; i++)
outerArray[i] = new double[MaxCols];
cout << MaxRows << MaxCols << endl;
}
void input()
{
cout << MaxRows << MaxCols << endl;
for (int k = 0; k < MaxRows; k++)
for (int j = 0; j < MaxCols; j++)
cin >> outerArray[k][j];
}
void outPut()
{
for (int l = 0; l < MaxRows; l++)
{
for (int m = 0; m < MaxCols; m++)
cout << outerArray[l][m] << " ";
cout << endl;
}
}
~TwoD()
{
for (int i = 0; i < MaxRows; i++)
delete[] outerArray[i];
delete[] outerArray;
}
};
int main()
{
TwoD example(5, 2);
example.input();
example.outPut();
return 0;
}