Лучше всего просто объявлять перечисления вместе с вашими классами, а не вкладываться в класс. На самом деле, вложенные типы обычно плохая идея, если они не являются частными. Конечно, есть исключения, но по большей части вам лучше без вложенности.
Константы должны быть определены в классе, но вам не нужно создавать экземпляр объекта класса, чтобы использовать их. Также они могут быть общедоступными, поэтому вам не нужно ничего наследовать. Если вы подумаете об этом достаточно усердно, вы сможете найти хорошее имя для класса, который содержит эти константы.
Практика показывает, что константы и перечисления редко бывают просто глобальными. Большую часть времени они тесно связаны с одним или несколькими классами. Затем вы должны определить эти константы как часть соответствующего класса и поместить перечисления в то же пространство имен, что и класс, использующий их.