Есть несколько основных проблем с вашим кодом.
Самая большая проблема заключается в том, что double[10][10]
это не конвертируемый в указатель double**
.
У вас также есть утечка памяти (mat
) в вашей реализации transposeMatrix()
.
Я рекомендую разделить проблемы печати матрицы и транспонирование матрица.Возможно, отдельные методы для (шаблонного) матричного класса.
А теперь, сказав, что ...
Зачем писать, когда уже существует очень хорошая реализация ?
Пример:
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>
int main ()
{
using namespace boost::numeric::ublas;
matrix<double> m(3, 3);
for (unsigned i = 0; i < m.size1(); ++i)
{
for (unsigned j = 0; j < m.size2(); ++j)
{
m(i, j) = 3 * i + j;
}
}
std::cout << m << std::endl;
std::cout << trans(m) << std::endl;
}
Выход:
[3,3]((0,1,2),(3,4,5),(6,7,8))
[3,3]((0,3,6),(1,4,7),(2,5,8))