J'utilise gcc 6.1.1
J'essaye d'utiliser std::exception, qui intelligemment n'a pas de constructeur acceptant une std::string, ni même un bête const char*.
Donc je dérive, pour pouvoir utiliser la méthode const char* what() const, en la redéfinissant :
#include <string> #include <exception> using namespace std; class Exception: public exception { public: Exception(const char* message) { this->message = message; } private: string message; const char* what() const override { return this->message; } };Et là, j'ai l'erreur looser throw specifier for 'virtual const char* Exception::what() const'.
Google, stackoverflow me donne ça : http://stackoverflow.com/questions/22698653/looser-throw-specifier-in-c
J'essaye ce qui est proposé :
- je compilais déjà avec -std=c++11
- j'ajoute un destructeur virtual (inutile mais c'est pas grave) : ~Exception() throw() {};
Et j'ai toujours la même erreur.
Deux questions :
- que se passe-t-il exactement ? J'ai lu des bouts de la norme à ce sujet, mais je ne comprends pas bien les tenants et aboutissants
- comment corriger ça ?
Merci d'avance pour votre aide.
ps -> pour une fois que j'essaye de faire "au plus simple" en utilisant la stl, ben ça commence bien