Итак, мое текущее понимание enum состоит в том, что я могу использовать его для создания констант, соответствующих числам. Таким образом,
typedef enum
{
number0 = 0,
number1 = 1,
.
.
.
} Numbers;
позволит мне ссылаться на 0 как число 0 в каждой части кода. Кажется, это работает нормально. Однако у меня возникли проблемы с выяснением, как использовать это в проекте Xcode. Например, я пишу один класс, NumberCounter
, и включаю этот код в заголовочный файл. Затем я пишу другой класс, numberCalculator
. Если я хочу использовать те же определения во втором классе, должен ли я: а) записывать классы в один и тот же исходный файл, или б) включать приведенный выше код в каждый файл, в котором я хочу использовать числа?
Если я включаю код в один класс и исключаю его во второй, я получаю (при попытке получить функцию, возвращающую что-то типа Numbers
) ошибку синтаксического анализа: ожидается ошибка типа, но если я включу код в обоих случаях выдается ошибка «Переопределение перечислителя». В настоящее время мой обходной путь заключается в том, чтобы включить код в каждый файл, а затем использовать препроцессор, чтобы убедиться, что он выполняется только один раз - т.е.:
#ifndef NumberDef
#define NumberDef
typedef enum
{
number0 = 0,
number1 = 1,
.
.
.
} Numbers;
#endif
Это работает, но я чувствую, что должен быть хороший простой способ сделать это. Что мне здесь не хватает?