Ik ben bezig met een programma dat een aantal tabellen bevat. Deze zijn geimplementeerd als linked lists.
De huidige implementatie heeft voor iedere tabel een aparte routine om elementen toe te voegen. Dit vanwege het feit dat de velden in de tabellen anders zijn. Ik kan me echter niet aan de indruk onttrekken dat dit wat overdreven is.
Ik kan een algemene routine maken die char-pointers accepteert en bij de aanroep de casting doen? Is dit te prefereren boven een aantal verschillende routines? Zijn er nadelen (casting kost tijd)?
Of is dit een probleem waarbij iedereeen direct roept dat C++ (geen bal verstand van) de uitgelezen opvolger van C is om dit eenvoudig op te lossen en moet ik dus eindelijk eraan geloven? In dat geval graag een stukje code hoe het zou moeten werken (met overerving ed).
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| struct inputinfo { char description[32]; char device[FILENAME_MAX]; char baud[8]; char fmt[4]; }; struct inputnode { struct inputnode *next,*prev; struct inputinfo *info; }; struct inputhead { int len; struct inputnode *first,*last; }; struct outputinfo { char description[32]; char device[FILENAME_MAX]; int bitrate; int padding; }; struct outputnode { struct outputnode *next,*prev; struct outputinfo *info; }; struct outputhead { int len; struct outputnode *first,*last; }; int add_input(struct inputinfo *info, struct inputhead *head); int add_output(struct outputinfo *info, struct outputhead *head); |
De huidige implementatie heeft voor iedere tabel een aparte routine om elementen toe te voegen. Dit vanwege het feit dat de velden in de tabellen anders zijn. Ik kan me echter niet aan de indruk onttrekken dat dit wat overdreven is.
Ik kan een algemene routine maken die char-pointers accepteert en bij de aanroep de casting doen? Is dit te prefereren boven een aantal verschillende routines? Zijn er nadelen (casting kost tijd)?
Of is dit een probleem waarbij iedereeen direct roept dat C++ (geen bal verstand van) de uitgelezen opvolger van C is om dit eenvoudig op te lossen en moet ik dus eindelijk eraan geloven? In dat geval graag een stukje code hoe het zou moeten werken (met overerving ed).