Я пишу программу, которая будет умножать матрицу с помощью потоков. У меня проблема с заполнением динамического массива int (не может использовать вектор).C++ fill dynamic array int
CPP файл:
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++;
}
}
часть ХПП файла:
private:
int n_; // columns
int m_; // rows
int *mac_;
От отладки я получаю:
это 0x0079f7b0 {П- = 3 m_ = 2 mac_ = 0x00000000 { }}
Я знаю, что могу написать mac_ = new int(n_*m_);
во втором конструкторе, но я хочу знать, почему 1-й не работает.
«Использование 1-го ..» Создает временный объект, а не выделение для предполагаемого объекта – Jonas
Вы можете использовать делегированные конструкторы – Jonas
@ Jonas, он не может использовать делегированный конструктор, так как он сначала должен использовать 'istream', указанный как аргумент для получения параметров конструкции. Хорошая старая функция 'init' здесь лучше подходит – wasthishelpful