Debes incluir todos los mensajes relacionados con tu duda en este post, si no obligarás a los moderadores a borrar o a mover cada mensaje nuevo que estás abriendo con la misma consulta.
Viendo tu código, te adelanto algunos fallos:
Has de tener siempre presente el tipo de retorno de las funciones:
Así, la función
espera que se retorne una variable del tipo Matriz, que es una redefinición de tipo, y que es Matriz*.
Además no puedes redefinir un tipo y ponerle el original, porque eso origina conflicto de nombres. Y además, por tema de legibilidad, uno espera encontrar un tipo redefinido con algún identiifcador que rápidamente le haga ver que es un tipo nuevo (Esto no es nada obligatorio, pero se puede considerar una buena práctica)
Así, que habría que empezar con algo como:
Ahora, volviendo a la función MatrizCrea(), habría que dejarla así:
Código C++:
Ver originaltMatriz MatrizCrea(int n, int m)
{
tMatriz aux
= (tMatriz
)malloc(sizeof(Matriz
)*n
*m
); aux->filas = n;
aux->columnas = m;
aux->sig=NULL;
return aux;
}
Atento a varias cosas:
1.-La función espera que se retorne un tipo tMatriz, por lo que aux deberá ser de ese tipo.
2.- Defines a aux como un puntero para poder hacer reserva de memoria. En esta misma página hay una
duda similar y queda bien explicada por vangodp
Por otro lado, en la función:
tienes problemas similares al tener la redefinición de tipos mal hecha, y mezclar punteros con objetos.
En todo caso, el error mas claro es este:
Ya que "v" es un objeto de tipo Matriz. Y seguramente tu quieras comprobar que
Puedes probar a sobrecargar el operador
!= para que tenga el comportamiento que quieres que tenga y hacer el código más legible, pero seguro que no es necesario.
Y ya no he visto mas del código. Arregla esas cosas y no postees en varios sitios, porque el moderador te va a tirar de las orejas!!