Les parametres par defaut en c++ ?
Résolu/Fermé
chabacha109
Messages postés
268
Date d'inscription
samedi 11 décembre 2010
Statut
Membre
Dernière intervention
14 mai 2012
-
Modifié par chabacha109 le 11/12/2010 à 18:12
ydurce Messages postés 78 Date d'inscription samedi 9 octobre 2010 Statut Membre Dernière intervention 12 décembre 2010 - 12 déc. 2010 à 00:13
ydurce Messages postés 78 Date d'inscription samedi 9 octobre 2010 Statut Membre Dernière intervention 12 décembre 2010 - 12 déc. 2010 à 00:13
A voir également:
- Les parametres par defaut en c++ ?
- Tous les paramètres - Guide
- Restaurer les paramètres par défaut ps4 - Guide
- Windows 11 clic droit afficher plus d'options par défaut - Guide
- Google par défaut en page de démarrage - Guide
- La passerelle par défaut n'est pas disponible ✓ - Forum Réseau
3 réponses
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 014
11 déc. 2010 à 18:59
11 déc. 2010 à 18:59
Les paramètres par défauts se mettent à l'implémentation :
De plus, il ne faut pas mélanger le C et le C++
Tu dois inclure <iostream> et non <iostream.h>
Et utilise plutôt la classe std::string, que les char* et "string.h"
poete::poete(char* ch1="",char* ch2="", int n=0, bool b=false) { // ... }
De plus, il ne faut pas mélanger le C et le C++
Tu dois inclure <iostream> et non <iostream.h>
Et utilise plutôt la classe std::string, que les char* et "string.h"
chabacha109
Messages postés
268
Date d'inscription
samedi 11 décembre 2010
Statut
Membre
Dernière intervention
14 mai 2012
9
Modifié par chabacha109 le 11/12/2010 à 20:40
Modifié par chabacha109 le 11/12/2010 à 20:40
<gras>le même problème...
mon code marche parfaitement avec "<iostream.h>"
sauf une problème des paramétre par defaut.
alors voici mon prog:
ennoncé:
une poeme est définie par un titre (char *)
et un theme (char *)
un nbl (nombre de ligne)(int)
et une signature (booléen ,signé ou pas)
#include<iostream.h>
#include<string.h>
class poete
{
private:
char * titre;
char * theme;
int nbl;
bool signe;
public:
poete(char *,char *,int,bool);
poete(const poete &);
~poete();
char * gettitre();
char * gettheme();
int getnbl();
bool getsigne();
void settitre(char *);
void settheme(char *);
void setnbl(int);
void setsigne();
void affiche();
bool operator==(poete);
};
bool poete::operator ==(poete p)
{
if(strcmp(titre,p.titre)==0&&strcmp(theme,p.theme)==0&&nbl==p.nbl)
return true;
else
return false;
}
poete::poete(char * tit="",char * them="",int nb=0,bool b=false)
{
titre=new char [20];
theme=new char [20];
strcpy(titre,tit);
strcpy(theme,them);
nbl=nb;
signe=b;
}
poete::~poete()
{
delete [] titre;
delete [] theme;
}
poete::poete(const poete & p)
{
titre=new char [20];
theme=new char [20];
strcpy(titre,p.titre);
strcpy(theme,p.theme);
nbl=p.nbl;
signe=p.signe;
}
int poete::getnbl()
{
return nbl;
}
bool poete::getsigne()
{
return signe;
}
char * poete::gettheme()
{
return theme;
}
char * poete::gettitre()
{
return titre;
}
void poete::setnbl(int n)
{
nbl=n;
}
void poete::setsigne()
{
if(signe==true)
signe=false;
else
signe=true;
}
void poete::settitre(char * ch)
{
strcpy(titre,ch);
}
void poete::settheme(char * ch)
{
strcpy(theme,ch);
}
void poete::affiche()
{
if(signe==true)
{
cout<<"le titre est "<<titre<<endl;
cout<<"le theme est "<<theme<<endl;
cout<<"nbr ligne est "<<nbl<<endl;
}
else
cout<<"le poete n'est pas encore signee !"<<endl;
}
void main()
{
poete p1("la charte","politique",5,true);
poete p2;
}
</gras>
mon code marche parfaitement avec "<iostream.h>"
sauf une problème des paramétre par defaut.
alors voici mon prog:
ennoncé:
une poeme est définie par un titre (char *)
et un theme (char *)
un nbl (nombre de ligne)(int)
et une signature (booléen ,signé ou pas)
#include<iostream.h>
#include<string.h>
class poete
{
private:
char * titre;
char * theme;
int nbl;
bool signe;
public:
poete(char *,char *,int,bool);
poete(const poete &);
~poete();
char * gettitre();
char * gettheme();
int getnbl();
bool getsigne();
void settitre(char *);
void settheme(char *);
void setnbl(int);
void setsigne();
void affiche();
bool operator==(poete);
};
bool poete::operator ==(poete p)
{
if(strcmp(titre,p.titre)==0&&strcmp(theme,p.theme)==0&&nbl==p.nbl)
return true;
else
return false;
}
poete::poete(char * tit="",char * them="",int nb=0,bool b=false)
{
titre=new char [20];
theme=new char [20];
strcpy(titre,tit);
strcpy(theme,them);
nbl=nb;
signe=b;
}
poete::~poete()
{
delete [] titre;
delete [] theme;
}
poete::poete(const poete & p)
{
titre=new char [20];
theme=new char [20];
strcpy(titre,p.titre);
strcpy(theme,p.theme);
nbl=p.nbl;
signe=p.signe;
}
int poete::getnbl()
{
return nbl;
}
bool poete::getsigne()
{
return signe;
}
char * poete::gettheme()
{
return theme;
}
char * poete::gettitre()
{
return titre;
}
void poete::setnbl(int n)
{
nbl=n;
}
void poete::setsigne()
{
if(signe==true)
signe=false;
else
signe=true;
}
void poete::settitre(char * ch)
{
strcpy(titre,ch);
}
void poete::settheme(char * ch)
{
strcpy(theme,ch);
}
void poete::affiche()
{
if(signe==true)
{
cout<<"le titre est "<<titre<<endl;
cout<<"le theme est "<<theme<<endl;
cout<<"nbr ligne est "<<nbl<<endl;
}
else
cout<<"le poete n'est pas encore signee !"<<endl;
}
void main()
{
poete p1("la charte","politique",5,true);
poete p2;
}
</gras>
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 014
11 déc. 2010 à 20:48
11 déc. 2010 à 20:48
Que ton code marche ou non avec <iostream.h>, ce n'est pas correct de l'écrire ainsi !
De plus, le point d'entrée du programme doit être int main et non void main.
Là encore ça peux marcher avec void, mais ce n'est pas correct.
Sinon, il manque juste le using namespace std, et c'est bon.
Remarque : il est plus judicieux d'utiliser les balises code, que les balises gras
De plus, le point d'entrée du programme doit être int main et non void main.
Là encore ça peux marcher avec void, mais ce n'est pas correct.
Sinon, il manque juste le using namespace std, et c'est bon.
Remarque : il est plus judicieux d'utiliser les balises code, que les balises gras
12 déc. 2010 à 00:13
non !!!