[C con Clase] Emulando C++ con C

Programante programante en gmail.com
Vie Ene 29 16:20:02 CET 2010


vicente lozano escribió:
> Hola,
>
> estoy haciendo, por enesima vez, una practica en la que se utilizan
> matrices, y por enesima vez, he perdido los sources de matrices que
> hice en su dia, asi que para no aburrirme hasta la extenuacion y, de
> paso, intentar comprender mejor como funcionan los objetos por dentro,
> estoy intentando hacer en C, un tipo matriz, que funcione
> conceptualmente como un objeto.
...
> void crearGrafo(grafo* g,int nodos)
> {
>      (*g)=malloc(sizeof(_grafo));
>      (*g)->nodos=nodos;
>      crearMatriz((*g)->matrizDeConectividad , nodos,nodos);
> }
>
> El problema es que si a la funcion crear matriz le pasamos
> directamente un valor "matriz", el malloc no reserva memoria pues no
> puede cambiar la direccion del puntero, por lo tanto le tenemos que
> pasar un puntero a puntero, necesitamos 2 niveles de indireccion.
>
> Pero en el caso de crearGrafo, la matriz es una parte de un struct asi
> qeu no podemos darle 2 niveles de indireccion.
>
> No se si me he explicado muy bien, espero que entendais lo que quiero
> hacer y cual es el problema, hoy estoy un poco espeso.
>
> Saludos!
Claro que puedes mandarle un doble puntero:
     crearMatriz(&(*g)->matrizDeConectividad , nodos,nodos);

No obstante, yo realizaría los métodos crearX() de forma que devolvieran
directamente el puntero, en lugar de tener tú que pasarles un doble puntero.





Más información sobre la lista de distribución Cconclase