I am writing program which will multiply matrix using threads. I have problem with filling dynamic int array (cannot use vector).
cpp file:
Matrix::Matrix(int n, int m)
{
mac_ = new int[n * m];
}
Matrix::Matrix(std::istream & is)
{
int tmp;
int i = 0;
is >> m_; //rows
is >> n_; //columns
Matrix(n_, m_); // using 1st constructor
while (is.peek() != EOF) {
is >> tmp;
mac_[i] = tmp; // debug stop here
i++;
}
}
part of hpp file:
private:
int n_; // columns
int m_; // rows
int *mac_;
From debug I get:
this 0x0079f7b0 {n_=3 m_=2 mac_=0x00000000 {???} }
I know that i can write mac_ = new int(n_*m_); in 2nd constructor but I want to know why 1st does not work.
istreamgiven as argument to obtain construction parameters. Good oldinitfunction is here better suitedMatrixadheres to the Rule of Three or you'll be back here with a new question before long. What is The Rule of Three?