Bonjour
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 !
# Accolades?
Posté par niol (site web personnel) . Évalué à 2.
[^] # Re: Accolades?
Posté par niol (site web personnel) . Évalué à 3.
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
Posté par Sebastien . Évalué à 3.
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 . Évalué à 3.
Je voulais dire :
>XMLException(std::string message);
<XMLException(const std::string& message);
[^] # Re: throw dans le destructeur
Posté par Pinaraf . Évalué à 2.
Ben oui c'est tout, ça marche :)
[^] # Re: throw dans le destructeur
Posté par Obsidian . Évalué à 2.
Ahem !
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.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.