Bonjour,

parfois des types abstraits de donnée sont définis ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
typedef struct
{
        int n;
}
*Integer;
 
Integer newInteger(int n)
{
        Integer i = malloc(sizeof(*i));
        i->n = n;
        return i;
}
 
void deleteInteger(Integer i)
{
        free(i);
}
 
int getValue(Integer i)
{
        return i->n;
}
et est utilisé ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
Integer i = newInteger(1);
printf("%i\n", getValue(i));
deleteInteger(i);
Or il a été signalé à plusieures reprises sur ce forum que masquer un pointeur n'était pas une bonne pratique .

Plusieures questions :
1) Pourriez vous donner des exemples de problèmes générés par cette pratique dans le cas général, c'est à dire si l'utilisateur du type abstrait manipule directement celui ci sans passer par les fonctions qui lui sont associées.
2) Dans le cas où l'utilisateur utilise les fonctions fournies et uniquement celles-ci pour :
- construire le type abstrait
- manipuler le type abstrait
- effacer le type abstrait
peut il y avoir encore des problèmes, si oui, lesquels ?

Merci .