Quizá te estás complicando la vida con tu manera de definir las matrices. En lugar de utilizar triples y dobles punteros, yo te sugiero el empleo de una estructura de datos, por ejemplo:
Código C++:
Ver originaltypedef struct
{
int fil;
int col;
int **A;
}
T_Matriz;
void pedir_memoria(T_Matriz *M, int f, int c)
{
M->fil = f;
M->col = c;
M->A = new int*[f];
for (int i=0; i<c; i++)
M->A[i] = new int[c];
}
y de un modo similar para todas las funciones que vayas a crear para operar con matrices.
Si quieres, aprovecha para comprobar (en función de lo que quieras hacer) que el número de filas y/o columnas es el correcto, si el apuntador A corresponde o no a un bloque de datos válido, etc.
Ya que estás empleando C++, ¿Por qué no implementas las matrices y sus operaciones como una clase?
Saludos,