помогите мне решить эту проблему
Вы выделяете динамическую c память в конструкторе, но никогда не удаляете ее. Это утечка памяти (но не причина вашего cra sh).
Вы также пренебрегали реализацией конструктора копирования и оператора присваивания, нарушая правило о трех .
Теперь к актуальной проблеме: компиляция вашей программы (после добавления отсутствующего #include
) приводит к:
t.cc:80:15: warning: reference to local variable ‘temp’ returned [-Wreturn-local-addr]
Это предупреждение приходит отсюда:
Array& operator *(Array array2)
{
Array temp(this->sizeY, array2.sizeX);
...
return temp;
}
Возвращение ссылки на Локальная переменная плохая, поскольку ссылка не ссылается на действительный объект, как только возвращается operator*()
, поэтому ваша программа демонстрирует неопределенное поведение.
Исправляя вышеуказанную ошибку, мы переходим к следующему (трудно определить ) один:
void PrintArray()
{
for(int i = 0; i<sizeX; i++)
{
for(int j = 0; i<sizeY; j++) // wrong variable used for loop limit (should be j)
{
cout << (int)array[i][j] << "\t";
}
cout << endl;
}
}