Retourner aux forums || Retourner au forum Programmation.c++
Je suis en train de développer une lib. Et j'aimerais créer un type XMLException (vous devinerez son utilité :)
Je veux qu'il hérite de std::exception.
Voici sa définition :
class XMLException : public std::exception {
public:
XMLException(std::string message);
XMLException(const char *message);
XMLException(char *message);
~XMLException() {};
const char* what () const throw();
private:
const char *msg;
};
La ligne en italique semble poser problème :(
Voici ce que me dit g++ :
XMLException.h:34: error: looser throw specifier for `virtual XMLException::~XMLException()'
/usr/include/g++/exception:56: error: overriding `virtual std::exception::~exception() throw ()'
(en triple exemplaire monsieur !)
voici dans XMLException.cpp la fonction :
const char* XMLException::what() const throw(){
return msg;
}
Bref, comment ça marche ? Son message ne me semble pas très très... clair et mon bouquin sur le C++ est trop vieux pour connaître les exceptions !
Merci d'avance à quiconque pouvant m'aider !
> Lire le message (6 commentaires, moyenne: 2,5).
Accolades?
Et si tu enlèves les accolades à la fin de la déclaration du destructeur?
-
[^]Re: Accolades?
Posté par niol (page perso, ) le 11/01/2005 à 18:00. (lien). Évalué à 3.En fait non je dis une connerie. C'est juste que throw doit renvoyer un exception, et et là c'est bizarre avec le what()...
Voir le polymorphisme des méthodes : si tu surcharges, tu ne peux pas changer la valeur de retour sans changer les paramètres. La fonction surchargée doit avoir le même prototype...
Mais je suis toujours pas sûr...
throw dans le destructeur
Déjà pour des raisons d'optimisation, je mettrais const std::exception& message pour le constructeur par parametre de XMLException (au lieu de recopier tout le std::string dans le scope du constructeur, on passe juste la reference).
Ensuite, il suffit de mettre throw dans le destructeur :
~XMLException() throw{};
Cf : http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/exception-so(...)
-
[^]Re: throw dans le destructeur
Posté par Sebastien Binet () le 11/01/2005 à 19:33. (lien). Évalué à 3.Rhaaaa !
Je voulais dire :
>XMLException(std::string message);
<XMLException(const std::string& message);
-
[^]Re: throw dans le destructeur
Posté par Pinaraf (Jabber id, ) le 11/01/2005 à 20:37. (lien). Évalué à 2.Merci !
Ben oui c'est tout, ça marche :)-
[^]Re: throw dans le destructeur
Posté par Obsidian () le 19/01/2005 à 22:01. (lien). Évalué à 2.mon bouquin sur le C++ est trop vieux pour connaître les exceptions !
Ahem !
Merci d'avance à quiconque pouvant m'aider !
Utilise plutôt celui-ci :
http://casteyde.christian.free.fr/online/cours_cpp/book1.html(...)
C'est en français, c'est gratuit, c'est en FDL, et je n'ai personnellement jamais trouvé mieux (Clair, Complet, Conçis).
Bon courage.
-
Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.c++



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.