Bonjour,
Je souhaiterai cr�er une fonction afin de g�n�rer des noms uniques de vector persistent.
Ces vectors seront �ffac�s via une autre fonction.
Chaque appel de la fonction doit cr�er un nom unique de vector.
Cet appel doit pas �tre �cras� par l'appel suivant.
Exemple :
Appel 1 :
+ Cr�ation d'un vector Liste_0 et de son contenu
Appel 2 :
+ Cr�ation d'un vector Liste_1 et de son contenu
Appel ... :
Le probl�me c'est que le nom des variables en C++ est statique et que chaque variable doit �tre d�clar�e avec un nom d�fini d'avance.
Peut-on cr��er une fonction g�n�ratrice de nom unique aux vector C++ ?
Sur d'autres languages cela se fait !
Sur la base d'un code d'exemple ci dessous, j'ai t�nt� sur un autre code, de cr�eer un nom unique via une macro pour un vector.
J'ai bien le vector sans erreur, mais je n'arrive pas � exploiter.
Code vector persistent classique
Tentative de cr�ation d'un nom unique avec une macro
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 <iostream> #include <fstream> #include <string> #include <vector> #include <utility> using std::cout; using std::end; using std::string; using std::atoi; using std::to_string; using std::vector; using std::pair; using std::make_pair; using std::sort; int main(){ int64_t I64_V1D_Taille{}; static vector<int64_t>Liste{}; I64_V1D_Taille = Liste.size(); cout << I64_V1D_Taille << end; Liste.clear(); }
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 #include <iostream> #include <fstream> #include <string> #include <vector> #include <utility> using std::cout; using std::end; using std::string; using std::atoi; using std::to_string; using std::vector; using std::pair; using std::make_pair; using std::sort; #define CONCAT(a, b) CONCAT_INNER(a, b) #define CONCAT_INNER(a, b) a ## b #define UNIQUE_NAME(base) CONCAT(base, __COUNTER__) int main(){ int64_t I64_V1D_Taille{}; static vector<int64_t>UNIQUE_NAME(Liste){};//fonctionne /*I64_V1D_Taille = UNIQUE_NAME(Liste).size(); //error C2065: 'Liste3': undeclared identifier*/ //cout << I64_V1D_Taille << end; }
Partager