exception::what()
возвращает const char*
, вы не можете это изменить. Но вы можете определить другой метод для возврата int
, например:
class BadLengthException : public std::length_error {
private:
int x;
public:
BadLengthException(int n) : std::length_error("bad length"), x(n) { }
int getLength() const { return x; }
};
А затем назовите это в ваших catch
заявлениях, например:
catch (const BadLengthException &e) {
int length = e.getLength();
...
}