Встроенный метод throw () в C ++

Я пытаюсь определить действительно простой класс исключения. Поскольку это так просто, я хочу сохранить его только в файле .h, но компилятору не нравится throw () . Код:

#include <exception>
#include <string>

class PricingException : public virtual std::exception
{
private:
    std::string msg;
public:
        PricingException(std::string message) : msg(message) {}
        const char* what() const throw() { return msg.c_str(); }
        ~PricingException() throw() {}
};

GCC выдает следующие ошибки:

/home/ga/dev/CppGroup/MonteCarlo/PricingException.h:13: error: expected unqualified-id before ‘{’ token
/home/ga/dev/CppGroup/MonteCarlo/PricingException.h:14: error: expected unqualified-id before ‘{’ token

для строк с throw () . Есть идеи, как это исправить?

EDIT

Я попытался удалить тела проблемных методов, например

virtual ~PricingException() throw();// {}

И теперь я получаю еще более странное сообщение об ошибке:

/home/ga/dev/CppGroup/MonteCarlo/PricingException.h:14: error: looser throw specifier for ‘virtual PricingException::~PricingException()’
/usr/include/c++/4.5/exception:65: error:   overriding ‘virtual std::exception::~exception() throw ()’

Он просто проигнорировал мой спецификатор throw!

6
задан Grzenio 29 March 2011 в 13:44
поделиться