ninotro
-
Modifié par ninotro le 7/04/2013 à 03:08
Bonsoir à tous, voilà ma situation, je commence le codage en C++ depuis quelques jours, et j'ai un petit problème tout bête mais pour lequel je ne trouve pas de réponse.
Mon problème ce trouve dans le constructeur Date(string laDate), je n'arrive pas à l'initialiser dans mon main, il me donne une erreur (request for member 'afficherDate' in 'DefDate3', which is of non-class type 'Date(std::string)').
Mon but est de pouvoir créer un objet avec le constructeur à 1 argument (qui est donc initialiser avec un string dans mon entête) et qui permettra à l'utilisateur de choisir le jour, le mois et l'année en utilisant le forme "jj/mm/aaaa".
PS: Le problème se situe dans le main, il s'agit de DefDate3...
Voici mon code: (ne faites pas attention au constructeur par défaut vide^^)
cout <<endl;
Date DefDate;
DefDate.afficherDate();
Date DefDate2(10,10,10);
DefDate2.setDate(10,10,10);
DefDate2.afficherDate();
Date DefDate3();
DefDate3.afficherDate();
}
Etudiant::Etudiant()
{
}
void Etudiant::saisieInfosEleve()
{
cout << "Saisie des Informations :"<<endl<<endl;
cout << "\tEntrer le nom de l'eleve : ";
cin >> nom;
cout << "\tEntrer le prenom de l'eleve : ";
cin >> prenom;
cout << "\tEntrer le sexe de l'eleve (Homme : 0 ou Femme : 1) : ";
cin >> sexe;
Date::Date(std::string laDate)
{
cout << "Objet avec appel du constructeur a 1 argument :"<<endl;
string leJour, leMois, lAnnee;
//Format de laDate :: jj/mm/aaaa
//On separe les 3 parties de la string
leJour=laDate.substr(0,2);
leMois=laDate.substr(3,2);
lAnnee=laDate.substr(6,4);
//On convertit les 3 string en int avec stockage dans des données membres
stringstream ss1, ss2, ss3;
ss1 << leJour;
ss1 >> j;
ss2 << leMois;
ss2 >> m;
ss3 << lAnnee;
ss3 >> a;
cout << "Donner la date de naissance (jj/mm/aa) : ";
cin >> j;
cin >> m;
cin >> a;
}
Date::Date()
{
cout << "Objet avec appel du constructeur par defaut de la classe Date..."<<endl;
j=01;
m=01;
a=1970;
}
Date::Date(int leJour, int leMois, int lAnnee)
{
cout << "Objet avec appel du constructeur a 3 arguments de la classe Date...";
leJour=j;
leMois=m;
lAnnee=a;
}
void Date::setDate(int leJour, int leMois, int lAnnee)
{
cout <<endl<< "Jour : ";
cin >> j;
cout << "Mois : "; //Implémentation du constructeur a 3 arguments
cin >> m;
cout << "Annee : ";
cin >> a;
}
void Date::afficherDate()
{
cout << "Date de naissance : "<<j<<"/"<<m<<"/"<<a<<endl<<endl; //Implémentation du constructeur par defaut
}
et son entête: (en tout cas concernée)
using namespace std;
class Date
{
int j, m, a;
public:
Date();
Date(string laDate);
Date(int leJour, int leMois, int lAnnee);
void setDate(int leJour, int leMois, int lAnnee);
void getDate(int leJour, int leMois, int lAnnee);
void afficherDate();
};
Donc je voudrais connaitre la commande pour appeller un string.
Voilà, j'espère ne pas avoir étais trop long, merci d'avance pour votre aide...