Problème string avec constructeur

Fermé
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^^)

#include <iostream>
#include <sstream>
#include <stdlib.h>
#include "Etudiant.h"
#include "Date.h"
#include "Section.h"

using namespace std;

int main()
{
Etudiant etudiant1;
Etudiant etudiant2;

cout << "\t\t\t**************************************" << endl << "\t ************Travail Programmation Synthese************"<< endl << "\t\t\t**************************************"<<endl << endl;
etudiant1.saisieInfosEleve();
etudiant1.affichageInfosEleve();
etudiant1.saisieNotesEleves();
etudiant1.affichageNotesEleve();
etudiant1.moyenne();
etudiant1.admission();

cout <<endl;
etudiant2.saisieInfosEleve();
etudiant2.affichageInfosEleve();
etudiant2.saisieNotesEleves();
etudiant2.affichageNotesEleve();
etudiant2.moyenne();
etudiant2.admission();

system("CLS");
cout << "\t\t\t**************************************" << endl << "\t ************Travail Programmation Synthese************"<< endl << "\t\t\t**************************************"<<endl << endl;

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;

cout <<endl;
}

void Etudiant::affichageInfosEleve()
{
cout <<endl<< "Affichage des informations de l'etudiant "<<prenom<< " " << nom<< " : "<<endl;
cout <<endl<< "\tNom : " << nom<<endl;
cout << "\tPrenom : " << prenom<<endl;

if (sexe==0)
{
cout << "\tSexe : Masculin" <<endl;
}
if (sexe==1)
{
cout << "\tSexe : Feminin" <<endl;
}
}

void Etudiant::saisieNotesEleves()
{
cout <<endl<< "Saisie des notes de l'etudiant "<<prenom << " " << nom<< " : "<<endl<<endl;

for (i=1; i<=5; i++)
{
cout << "" << i << "er note : ";
cin >> notes[i];
}
}

void Etudiant::affichageNotesEleve()
{
cout <<endl<< "Affichage des notes de l'etudiant "<<prenom << " " << nom<< " : "<<endl;
cout <<endl<< "\t1ere note : "<< notes[1]<<endl;
cout << "\t2eme note : "<<notes[2]<<endl;
cout << "\t3eme note : "<<notes[3]<<endl;
cout << "\t4eme note : "<<notes[4]<<endl;
cout << "\t5eme note : "<<notes[5]<<endl;
}

float Etudiant::moyenne()
{

float moy;
moy=((notes[1]+notes[2]+notes[3]+notes[4]+notes[5])/5);
cout << endl << "La moyenne est de " << moy<<endl;
return moy;
}

bool Etudiant::admission()
{
if (Etudiant::moyenne()>=10)
{
cout <<endl<< "Bravo, vous etes admis !!!"<<endl;
return (true);
}
else
{
cout <<endl<< "Vous avez echoue(e) !!!"<<endl;
return (false);
}
}

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...

Cordialement, NinoTro.