Прямые объявления enum не поддерживаются в большинстве современных компиляторов. Это запланированная особенность грядущего C ++ 0x. Вы можете создавать указатели для типа , вероятно , но не можете создавать экземпляры, это также совместимо с другими типами (структурами и классами).
Ой, мой плохой, я понял, что это неправильно, я думаю. Во всяком случае, прочитайте другие и прочитайте это также. Заголовки не компилируются отдельно. Поэтому, если вы не включили в заголовок необходимый заголовок и включили его в файл cpp, вы не столкнетесь с какими-либо ошибками. Пока все файлы cpp содержат оба заголовка с требуемым порядком, проблем не будет вообще. Однако это не очень хорошая идея, лучше всего включить в заголовок любые необходимые файлы и использовать средства защиты заголовков, чтобы они не добавлялись дважды. Я надеюсь, что это имеет смысл.