SVNiko ha scritto:
Non ha necessità di sapere di quale tipo di dato necessita. Al più gli serve sapere se viene prima o dopo dell'elemento che fa confrontare.
forse non riesco a esprimere chiaramente la mia domanda.. allora..
in abrgenerico.c scrivo il corpo della struttura come
typedef struct abrgenerico
{
void * info;
struct abrgenerico *sx;
struct abrgenerico *dx} abr;
e la funzione inserimento (ABR root, void* item) [in abrgenerico.h definisco il tipo di dato ABR * abr]
il cui corpo contiene il confronto nel caso in cui root sia != NULL.
In datoint.h, come dici tu, definisco le funzioni di confronto del dato intero.
Ora se dal main io richiamo l'inserimento come inserimento(root,(void*)item) in che modo la funzione inserimento all'interno di abrgenerico.h chiama la funzione di confronto di interi, piuttosto che di stringhe, o di altri tipi di dato? Non necessità di sapere, ma le funzioni di confronto che io scrivo sono diverse, quindi in qualche modo dovrà pur chiamare una o l'altra... Ecco perchè inizialmente io avevo utilizzato un puntatore a funzione di tipo confronta.. da dare in input a inserimento.
Nel main è a scelta dell'utente che utilizza il programma il tipo di dato da inserire.