Я пытаюсь сделать что-то вроде следующего:
enum E;
void Foo(E e);
enum E {A, B, C};
который компилятор отклоняет. Я быстро взглянул на Google, и консенсус, похоже, "вы не можете сделать это", но я не могу понять, почему. Кто-нибудь может объяснить?
Пояснение 2: Я делаю это, поскольку у меня есть закрытые методы в классе, которые принимают указанное перечисление, и я не хочу, чтобы значения перечисления были выставлены - поэтому, например, я не хочу, чтобы кто-нибудь знал, что E определен как
enum E {
FUNCTIONALITY_NORMAL, FUNCTIONALITY_RESTRICTED, FUNCTIONALITY_FOR_PROJECT_X
}
поскольку проект X - это не то, о чем я хочу, чтобы мои пользователи знали.
Итак, я хотел переслать объявление enum, чтобы я мог поместить приватные методы в файл заголовка, объявить enum внутри cpp и распространить файл и заголовок встроенной библиотеки людям.
Что касается компилятора - это GCC.