Je souhaite écrire une petite application de gestion d'objet
postaux,comprenant pour l'instant
une classe ObjetPostal ainsi que sa dérivation publique Lettre.C'est dans
cette derniere que figure mon incompréhension.
Voici le code :
-------------------------------------------------------------------------------
using namespace std;
Lettre (string dn , string da , int c , string dv, bool r, bool u)
: ObjetPostal ( dn , da , c , dv , r) {
urgence = u;
}
float prixAff () {
float prix = 0.5;
if (recom){
prix += 2;
}
if (urgence) {
prix += 3;
}
return prix;
}
};
ostream &operator<<(ostream & o , const Lettre & c){
cout << (ObjetPostal) c << endl;
o << "en urgence ?? :" << Lettre::urgence << endl;
}
--------------------------------------------------------------------------------------
Voici maintenant les invectives de mon compilo:
MassiveAttack# g++ Lettre.cpp
Lettre.cpp:3: erreur d'analyse syntaxique avantle jeton « { »
Lettre.cpp: Dans function « float prixAff() »:
Lettre.cpp:22: « recom » non déclaré (première utilisation dans cette
fonction)
Lettre.cpp:22: (Chaque identificateur non déclaré est rapporté seulement
une
seule fois pour la fonction dans laquelle il apparaît.)
Lettre.cpp:26: « urgence » non déclaré (première utilisation dans cette
fonction)
Lettre.cpp: At global scope:
Lettre.cpp:33: erreur d'analyse syntaxique avantle jeton « } »
Lettre.cpp:36: erreur de syntaxes avantle jeton « & »
Lettre.cpp:38: erreur de syntaxes avantle jeton « << »
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Eric Fournier
"Amédée" a écrit dans le message de news:
Bonjour,
Je souhaite écrire une petite application de gestion d'objet postaux,comprenant pour l'instant une classe ObjetPostal ainsi que sa dérivation publique Lettre.C'est dans cette derniere que figure mon incompréhension.
Il ne faut jamais include de directives "using namespace" dans un .h
class Lettre : public ObjetPostal{
[...]
ostream &operator<<(ostream & o , const Lettre & c){ cout << (ObjetPostal) c << endl;
En C++, il est recommandé d'utiliser static_cast, dynamic_cast ou reinterpret_cast plutôt que des cast traditionnel du C. Dans le cas présent, ce serait static_cast.
o << "en urgence ?? :" << Lettre::urgence << endl; } -------------------------------------------------------------------------- ------------
Je dirais que soit tu n'as pas inclu ObjetPostal.h, soit il te manque un "}" ou un ";" à la fin du dernier fichier que tu inclus.
Lettre.cpp: Dans function « float prixAff() »: Lettre.cpp:22: « recom » non déclaré (première utilisation dans cette fonction) Lettre.cpp:22: (Chaque identificateur non déclaré est rapporté seulement une seule fois pour la fonction dans laquelle il apparaît.) Lettre.cpp:26: « urgence » non déclaré (première utilisation dans cette fonction) Lettre.cpp: At global scope: Lettre.cpp:33: erreur d'analyse syntaxique avantle jeton « } » Lettre.cpp:36: erreur de syntaxes avantle jeton « & » Lettre.cpp:38: erreur de syntaxes avantle jeton « << »
Sémantiquement, je vois mal comment additionner des lettres donne des prix. L'opérateur + devrait rester non-défini, et l'usager devrait appeller ObjetPostal::prixAff pour chaque objet lorsqu'il désire additionner des prix.
ostream &operator<< ( ostream & o , const ObjetPostal & c){ o << "nom de destination : " << c.destName << endl; o << " adresse de destiantion : " << c.destAdr << endl; o << " code postal : " << c.codeP << endl ; o << "vile de destination" << c.destVille << endl; o << " valeur de recommandé :" << c.recom << endl; return o; }
-- Using Opera's revolutionary e-mail client: http://www.opera.com/m2/
"Amédée" <msouquet@wanadoo.fr> a écrit dans le message de
news:opshtodtagqim39g@localhost.localdomain...
Bonjour,
Je souhaite écrire une petite application de gestion d'objet
postaux,comprenant pour l'instant
une classe ObjetPostal ainsi que sa dérivation publique Lettre.C'est dans
cette derniere que figure mon incompréhension.
Il ne faut jamais include de directives "using namespace" dans un .h
class Lettre : public ObjetPostal{
[...]
ostream &operator<<(ostream & o , const Lettre & c){
cout << (ObjetPostal) c << endl;
En C++, il est recommandé d'utiliser static_cast, dynamic_cast ou
reinterpret_cast plutôt que des cast traditionnel du C.
Dans le cas présent, ce serait static_cast.
o << "en urgence ?? :" << Lettre::urgence << endl;
}
--------------------------------------------------------------------------
------------
Je dirais que soit tu n'as pas inclu ObjetPostal.h, soit il te manque un "}"
ou un ";" à la fin du dernier fichier que tu inclus.
Lettre.cpp: Dans function « float prixAff() »:
Lettre.cpp:22: « recom » non déclaré (première utilisation dans cette
fonction)
Lettre.cpp:22: (Chaque identificateur non déclaré est rapporté seulement
une
seule fois pour la fonction dans laquelle il apparaît.)
Lettre.cpp:26: « urgence » non déclaré (première utilisation dans cette
fonction)
Lettre.cpp: At global scope:
Lettre.cpp:33: erreur d'analyse syntaxique avantle jeton « } »
Lettre.cpp:36: erreur de syntaxes avantle jeton « & »
Lettre.cpp:38: erreur de syntaxes avantle jeton « << »
Sémantiquement, je vois mal comment additionner des lettres donne des prix.
L'opérateur + devrait rester non-défini, et l'usager devrait appeller
ObjetPostal::prixAff pour chaque objet lorsqu'il désire additionner des
prix.
ostream &operator<< ( ostream & o , const ObjetPostal & c){
o << "nom de destination : " << c.destName << endl;
o << " adresse de destiantion : " << c.destAdr << endl;
o << " code postal : " << c.codeP << endl ;
o << "vile de destination" << c.destVille << endl;
o << " valeur de recommandé :" << c.recom << endl;
return o;
}
Je souhaite écrire une petite application de gestion d'objet postaux,comprenant pour l'instant une classe ObjetPostal ainsi que sa dérivation publique Lettre.C'est dans cette derniere que figure mon incompréhension.
Il ne faut jamais include de directives "using namespace" dans un .h
class Lettre : public ObjetPostal{
[...]
ostream &operator<<(ostream & o , const Lettre & c){ cout << (ObjetPostal) c << endl;
En C++, il est recommandé d'utiliser static_cast, dynamic_cast ou reinterpret_cast plutôt que des cast traditionnel du C. Dans le cas présent, ce serait static_cast.
o << "en urgence ?? :" << Lettre::urgence << endl; } -------------------------------------------------------------------------- ------------
Je dirais que soit tu n'as pas inclu ObjetPostal.h, soit il te manque un "}" ou un ";" à la fin du dernier fichier que tu inclus.
Lettre.cpp: Dans function « float prixAff() »: Lettre.cpp:22: « recom » non déclaré (première utilisation dans cette fonction) Lettre.cpp:22: (Chaque identificateur non déclaré est rapporté seulement une seule fois pour la fonction dans laquelle il apparaît.) Lettre.cpp:26: « urgence » non déclaré (première utilisation dans cette fonction) Lettre.cpp: At global scope: Lettre.cpp:33: erreur d'analyse syntaxique avantle jeton « } » Lettre.cpp:36: erreur de syntaxes avantle jeton « & » Lettre.cpp:38: erreur de syntaxes avantle jeton « << »
Sémantiquement, je vois mal comment additionner des lettres donne des prix. L'opérateur + devrait rester non-défini, et l'usager devrait appeller ObjetPostal::prixAff pour chaque objet lorsqu'il désire additionner des prix.
ostream &operator<< ( ostream & o , const ObjetPostal & c){ o << "nom de destination : " << c.destName << endl; o << " adresse de destiantion : " << c.destAdr << endl; o << " code postal : " << c.codeP << endl ; o << "vile de destination" << c.destVille << endl; o << " valeur de recommandé :" << c.recom << endl; return o; }