Bonjour,
J'ai eu du mal à formuler ce titre et j'ai un peu de mal à formuler mon problème... Je vois souvent des intérêts aux templates pour figer la taille de certains éléments à la compilation. Comme je travaille en embarqué, ça me permet de figer à la compilation la mémoire nécessaire et d'éviter l'allocation dynamique. Mon problème est que je vois pas comment utiliser facilement le type template en paramètre ou retour d'autres fonctions sans mettre tout le monde template.
Un petit code sera plus clair je pense :
Pour rester plus "standard", on peut faire la même chose avec array de <array>. En admettant qu'on spécialise sur le paramètre de type mais pas sur la taille, on ne peut toujours pas le passer à des fonctions non templates (la taille n'est pas un problème, on peut la récupérer auprès de l'objet).
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
23
24
25
26
27
28
29 template<unsigned int icon_count> class StatusBar { void setIcon(unsigned int index, bool on) { // bla bla } unsigned int getIconCount() { return icon_count; } }; StatusBar<5> my_bar; StatusBar<?> getStatusBar() { return my_bar; } void init() { StatusBar<?> bar = getStatusBar(); for (unsigned int i = 0; i < bar.getIconCount(); ++i) { bar.setIcon(i, false); } }
Est-il possible de réaliser un tel code ? Si oui, comment ? Si non, il me reste donc à oublier définitivement ce genre d'idées
Merci d'avance !
Partager