Título: [C] Estructuras y punteros a funciones Publicado por: Amadeo Magnus en 10 Octubre 2010, 22:32 pm Buenas, tengo el sig. problema. Estoy haciendo una tabla de hash abierta (en C)... los profesores nos tiran las primitivas y nosotros lo tenemos que implementar.
Esta es la estructura del hash: Código: struct _hash_t { El problema es con la primitiva "hash_crear" que es así (originalmente): Código: typedef void destruir_dato_t (hash_dato_t); Supuestamente eso que le pasas por parámetro es una función para destruir un dato. Ahora, como no entendí una chagar, la cambié y la deje así: Código: hash_t* hash_crear(destruir_dato_t (*destruir_dato)(hash_dato_t* valor)) y el typedef ese de arriba lo deje así (en el .h): Código: typedef void* destruir_dato_t; Bueno, después cuando creo el hash, al final le pongo: Código: hash->destruir_dato = destruir_dato; que sería la función que le pase. Después, tengo otra función que es "hash_guardar" a la cuál entre otras cosas le paso una clave , y básicamente sitúa un iterador en X posición del arreglo (la que me devuelve una función de hashing), recorre la lista apuntada por esa posición, y si hay algún nodo de la lista cuya clave coincide con la clave que le pase a hash_guardar, lo borra y crea otro nodo con otros datos y lo inserta. El tema es cuando quiero borrar, que llamo a esta función: Código: hash->destruir_dato(dato_aux); Y el compilador me tira "hash.c:161: error: el objeto ‘hash->destruir_dato’ llamado no es una función" Entonces... ¿cómo se hace para usar bien una función almacenada en una estructura? :huh: Saludos. Título: Re: [C] Estructuras y punteros a funciones Publicado por: Karman en 13 Octubre 2010, 15:05 pm Código
S2 |