1

pouet,

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. smile

ps -> pour une fois que j'essaye de faire "au plus simple" en utilisant la stl, ben ça commence bien grin

2

Il faut rajouter throw() (ou noexcept ou noexcept(true)) aussi à what.

Et sinon, pour faire vraiment au plus simple, tu fais un throw directement de ton const char * sans passer par une std::exception. tongue
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3

Ok, merci.
Evidemment je peux ne pas dériver std::exception, mais je veux catcher mes exceptions avec les standards.

4

Tu peux même faire style TI: throw 40;. tongue
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

5

Tu peux carrément throw des strings en brut .... Cébô