pbm de déclaration

pbm de déclaration - C++ - Programmation

Marsh Posté le 19-03-2004 à 13:23:09    

bonjour à tous
j'ai un blème, je doit corriger un prog, comme je suis novice en c++, je vous donne la portion du code:
 
#include <string>
class Exception {
protected:
/*ligne 4*/ string * erreur;
public:
/*ligne 6*/  Exception(){erreur = new string()}
 
/*ligne7*/  Exception (string message);
 
  Exception(const Exception& e);
 
  virtual ~Exception(){delete erreur;}
 
/*ligne 13*/  string getError();
};
 
#endif  
 
voila et il me donne ces messages d'erreur
 
4: syntax error before `*' token
7: parse error before `message'
13: parse error before `)' token
In constructor `Exception::Exception()':
6: `erreur' undeclared (first use this function)
6: (Each undeclared identifier is reported only once for each function it appears in.)
6: parse error before `;' token
 
si vous pouviez m'eclairer sur ça, et comment résoudre ces prob, je vous remercie bcp

Reply

Marsh Posté le 19-03-2004 à 13:23:09   

Reply

Marsh Posté le 19-03-2004 à 13:26:36    

using namespace std;
 
 
1) pas de sms style
2) utilisez les balises cpp
 
i) aucun intéret d'avoir une string allouée dynamiquement
ii) faut faire dériver d'une exception de base  
iii) marquer les méthodes qu'ils faut comme throw() et/ou const
iv) passer les paramètres par const &
v) si t'as rien compris, alors continue à apprendre et vite / lfaire une recherche sur le forum


Message édité par Taz le 19-03-2004 à 13:27:29
Reply

Marsh Posté le 19-03-2004 à 14:10:42    

oui je ne comprends pas ce que tu dis j'ai bien dit que j'étais novice donc si tu pouvez expliquer les choses plus simplement ça serais gentil de ta part
merçi

Reply

Marsh Posté le 19-03-2004 à 19:49:35    

voila ce qu'il a voulu dire...
 

Code :
  1. #include <string>
  2. using namespace std;
  3. class Exception {
  4. protected:
  5. string * erreur;
  6. public:
  7. Exception(){erreur = new string;}
  8. Exception(string & message);
  9. Exception(const Exception & e);
  10. virtual ~Exception(){delete erreur;}
  11. string getError();
  12. };


 
Bizarre ton pointeur : string *. Si tu veux remplacer un vieux char *, tu as seulement besoin d'un string tout court.
 
Cordialement,
 xteR.


Message édité par xterminhate le 19-03-2004 à 19:50:55
Reply

Marsh Posté le 19-03-2004 à 19:51:11    

xterminhate a écrit :

voila ce qu'il a voulu dire...
 

Code :
  1. #include <string>
  2. using namespace std;
  3. class Exception {
  4. protected:
  5. string * erreur;
  6. public:
  7. Exception(){erreur = new string;}
  8. Exception(string & message);
  9. Exception(const Exception & e);
  10. virtual ~Exception(){delete erreur;}
  11. string getError();
  12. };


 
Bizarre ton pointeur : string *... si tu veux remplacer un vieux char *, string tout court dont tu as besoin.
 
Cordialement,
 xteR.

non, tu as tout faut. quand on ne sait pas définir une exception, on ne le fait pas. on doit réduire au minimum le risque qu'une exceptions en déclenche une autre. ça n'est pas le cas. cai mauvais.

Reply

Marsh Posté le 19-03-2004 à 20:07:57    

J'avais pas vu le nom de la classe de narry! Je m'etais entété a réécrire son code betement pour inserer le namespace et garantir la bonne compile.  
 
En effet, si cette classe est destinée à traiter les exceptions .... c'est une autre histoire.
 
Cordialement,
   Xter.

Reply

Marsh Posté le 19-03-2004 à 20:12:57    

xterminhate a écrit :

En effet, si cette classe est destinée à traiter les exceptions .... c'est une autre histoire.

ouais ouais, genre elle s'appelle Exception ...

Reply

Marsh Posté le 19-03-2004 à 20:29:22    

Arf! Vu comme ça ;)
 
Les exceptions ne s'addressent pas vraiment aux novices. Franchement, ca me tuerait que narry se mette à la programmation des exceptions, alors qu'il ne connait pas ni le namespace et ni le std::string.... enfin on ne sait jamais :p
 
Cordialement,
   XteR.

Reply

Marsh Posté le 19-03-2004 à 20:44:30    

si ça s'adresse aux novices. mais quand on leur enseigne rien, ça abouti a ce genre de bêtises

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed