bonjour ,
pour mon application j'essaye de mettre en place un 'registre' pour stocker des valeurs diverses issues de l'interface pour les transmettre à des parties plus profondes de mon prog.
Apres quelques essais je suis bloqué(int float), il doit y avoir plus simple et plus propre mais je ne sais pas comment faire.
Si quelqu'un a une idée ça seait cool
.h
.cpp
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 #ifndef PARAMSREGISTER_H #define PARAMSREGISTER_H #include <string> #include <vector> #include <sstream> #include <stdlib.h> class ParamsRegister { public: ParamsRegister(); virtual ~ParamsRegister(); void set(std::string name, int value); void set(std::string name, float value); template <class T> T get( std::string name); protected: private: template<class T> std::string toString ( T value); enum etype { INT_TYPE, FLOAT_TYPE }; struct param { std::string name; std::string value; etype type; }; std::vector<param> mvParams; }; template <class T> T ParamsRegister::get( std::string name) { for( auto i : mvParams) { if (i.name == name) { switch( i.type) { case INT_TYPE: { int v = atoi( i.value.c_str() ); return v; break; } case FLOAT_TYPE: { float v = atof( i.value.c_str() ); return v; break; } } } } } template<class T> std::string ParamsRegister::toString ( T value) { std::stringstream sstr; sstr << value; return sstr.str(); } #endif // PARAMSREGISTER_H
Merci.
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
30 #include "ParamsRegister.h" ParamsRegister::ParamsRegister() { //ctor } ParamsRegister::~ParamsRegister() { //dtor } void ParamsRegister::set(std::string name, int value) { param p; p.type = INT_TYPE; p.name = name; p.value = toString( value); mvParams.push_back( p); } void ParamsRegister::set(std::string name, float value) { param p; p.type = FLOAT_TYPE; p.name = name; p.value = toString( value); mvParams.push_back( p); }
Partager