Bonjour,

Je suis développeur embarqué, et je suis en train de migrer sur le C++ (je viens du C). Je ne suis donc pas encore bien rodé au développement C++. Pour le besoin de mon application, les "paramètres" généraux de mon systèmes, comme par exemple, le temps avant mise en veille, les timings de timer (RTC, Watchdog, etc..) doivent êtres stockés en flash, modifiable et accessible.

En C, j'avais une grosse structure, ce n’était pas trop top top. surtout pour l’évolution (ajout de paramètres).

En C++, j'ai écrit une classe Parameter, qui stocke un vector d'une structure visible ci-dessous :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
struct Parameter_t
{
	Parameter_e m_id;
	Type_e m_type;
	char m_key[20];
	void* m_value;
};
Parameter_e est une enum. Type_e aussi. Je vous passe la partie gestion de la flash, c'est inintéressant ici, ce qui intéressant, c'est comment rapatrier ces données dans une structure en ram utilisable par le programme.

En pratique cela ne fonctionne pas pour plusieurs raison :
  • Impossible de faire un Getter generique ;
  • allocation complexe ;
  • templating bancale pour accéder/modifier les données (enfin ce que j'en ai fait..).


Je me suis dit que je pourrais écrire un truc du style :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
template<typename T>
struct Parameter_t
{
	Parameter_e m_id;
	Type_e m_type;
	char m_key[20];
	T m_value;
};
mais comment faire mon vector dans ce cas ?

si vous avez une piste...

d'avance merci.