Salut,
Tu dois séparer la lecture des informations dans le fichier et la création de tes objets.
Tu ne dois donc pas créer un constructeur par copie, mais bel et bien un constructeur qui prenne les informations dont tu dispose
Ensuite, si dans titi.txt, tu as les informations dans un ordre donné (comme par exemple)
Code:
nom prenom age sexe bidule
et que dans toto.txt, tu as les mêmes informations, mais dans un autre ordre (comme par exemple)
Code:
prenom age sexe bidule nom
il "suffit" de faire lire les informations dans l'ordre réel, avant d'appeler le constructeur (même si on peut discuter du fait que cette situation n'est arrivée que parce que tu a sans doute loupé quelque chose en conception ;))
Cela pourrait se faire sous une forme proche de
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| CFauxFrere* lectureFichier(const std::string& fname)
{
std::ifstream ifs(fname.c_str());
std::string nom;
std::string prenom;
int age;
char sexe;
std::string bidule;
if( fname=="titi.txt")
ifs >> nom >> prenom >> age >> sexe >> bidule;
else
ifs >> prenom >> age >> sexe >> bidule >> nom;
return new FauxFrere(nom, prenom, age, sexe, bidule);
} |