Est il possible instancier une classe avec un nom variable
Salut à tous, je viens d'étudier le langage c++ et j'ai un mini projet dont je suis appeler à simuler une boite mail , j'ai plusieurs class dans le programme à savoir class Mail, class BoiteReception , class ElementsEnvoyes , class Compte , class ListeCompte .
Pour vous expliquer mon problème , je suppose que je dois vous présentez la définition au moins des deux classes Compte et ListeCompte :
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 35 36 37 38
| class Compte
{
string Login ;
string Password ;
vector < Contact > mes_contacts ;
public:
BoiteReception Recu ;
ElementsEnvoyes Envoyes ;
Compte ( string , string );
Mail Nouveau_mail(string Dest , string objet, string continu); //
void Envoi_mail ( string Dest , string objet, string continu, ListeCompte ) ;
void Ajouter_contact ( string ad , string N_P="" , int Mob = 0 , string Descrip = "" ); //
void Supprimer_contact ( string ); //
bool Chercher_contact ( string ); //
void ChangePassword( string, string , string );
void Afficher (); //
void putLogin(string);
string getLogin();
string getPassword();
};
class ListeCompte
{
vector < Compte *> ListeDesComptes ;
public :
ListeCompte();
void Ajouter_Compte ( Compte *);
Compte* Chercher_Compte ( string ) ;
void Afficher();
}; |
Au début lorsque j'ai conçu le programme , j'avais pas l'intention de manipuler des fichiers , maintenant j'ai un besoin , lors de la phase d'authentification , je vais supposer que les login et mots de passe de mes users sont stockés dans un fichiers , et puisque mon programme est conçu de manière à ce que tous les comptes mail existants doivent être stockés dans ma liste , donc au lancement du programme je dois lire les login et mots de passe du fichier , créer un nombre de Comptes ( pour moi inconnu ) avec les même paramètres récupérés du fichier , et c là que je suis bloqué , voici mon le code utilisé dans le main :
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
| ListeCompte Liste ;
string login, passwd ;
ifstream monFlux;
monFlux.open("E:/C++/users.txt");
if(monFlux.is_open()) //On teste si tout est OK.
{
vector <Compte *>::iterator it=Liste.ListeDesComptes.begin();
while ( !monFlux.eof() )
{
monFlux >> login ;
monFlux >> passwd ;
Compte C ( login , passwd ); // c'est ici mon pb :?
Liste.Ajouter_Compte(&C);
}
}
monFlux.close();
cout <<"Users List : " << endl;
cout <<"------------" << endl;
Liste.Afficher(); // la méthode Afficher ici afficher seulement le login de chaque Compte
system("pause");
return 0;
} |
étant donné que le fichier contient :
user1 1111
user2 2222
user3 3333
Le programme m'affiche :
Users Liste:
------------
user3
user3
user3
j'ai compris que dans la boucle while chaque fois que je crée la variable Compte C avec deux nouveaux paramètres , les anciennes valeurs seront donc écrasées et ce pour cela qu'au final je ne trouve dans ma liste que des comptes avec les derniers paramètres
y a il une solution sans avoir à changer la structure de mes classes ??
Merci d'avance :ccool: