Вот шаблон матрицы, который я недавно начал реализовывать. У него не так много функций, так как, как я уже сказал, я только начал
Заголовочный файл:
#ifndef MATRIXX_H
#define MATRIXX_H
#include <iostream>
using namespace std;
template <typename theType> class Matrix
{
public:
Matrix()
{
rows = columns = 0;
matrixRoot = new theType *[rows];
for(int i = 0; i < rows; i++)
{
matrixRoot[i] = new theType[columns];
}
}
Matrix(int rows, int columns)
{
matrixRoot = new theType *[rows];
for(int i = 0; i < rows; i++)
{
matrixRoot[i] = new theType[columns];
}
}
~Matrix()
{
delete [] *matrixRoot;
delete [] matrixRoot;
}
int numrows() const
{
return rows;
}
int numcols() const
{
return columns;
}
private:
int rows;
int columns;
theType **matrixRoot;
};
#endif
Проблема возникает, когда я пытаюсь запустить эту программу тестирования:
#include "matrixx.h"
#include <iostream>
void TestingMatrix()
{
int r = 5;
int c = 4;
Matrix<int> a(r, c);
cout << "Number of rows: " << a.numrows() << " Number of columns: " << a.numcols() << endl;
}
int main()
{
TestingMatrix();
}
Если это будет правильно, я ожидаю, что результат выдаст что-то вроде:
Количество строк: 5 Количество столбцов: 4
Вместо этого я получаю что-то way off:
Количество строк: 134515193 Количество столбцов: 2515748
Интересно отметить, что количество столбцов изменяется, но не количество строк при каждом запуске программы.
Очевидно, что я никуда не смогу добраться, если не смогу даже правильно инициализировать экземпляр матрицы, поэтому я хотел бы знать, что я делаю неправильно, что дает мне такие ошибочные результаты. Кстати, я знаю, что мой деструктор также испортился, так как это вызывает ошибку программы (смеется), но это проблема, которую я планирую решить самостоятельно в будущем. Я был бы очень признателен, если бы кто-то мог объяснить, почему я получил эти числа для строк и столбцов и как я могу получить их, чтобы они возвращали правильные значения.
Спасибо. (