Fonction de cr�ation de nom unique pour un vector
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
Code:
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();
} |
Tentative de cr�ation d'un nom unique avec une macro
Code:
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;
} |