У меня есть иерархия классов, и каждый класс в ней имеет класс исключения, полученный в параллельной иерархии, таким образом...
class Base
{
};
class Derived : public Base
{
};
class BaseException : public std::exception
{
enum {THIS_REASON, THAT_REASON};
};
class DerivedException : public BaseException
{
// er...what?
};
Я хотел бы в классе DerivedException расширить тип перечисления, чтобы включить новое значение THE_OTHER_REASON, так что класс DerivedException мог содержать любое из трех значений.
Прежде всего, должен ли я это делать? Кажется ли это разумной практикой? Если да, то как мне это сделать? Если нет, то какие альтернативы вы бы порекомендовали?
РЕДАКТИРОВАТЬ: Возможный дубликат был предложен здесь, но предлагаемые решения разные, потому что этот вопрос задан для С# и для С++.