Вы не сможете определить enum
извне. В C++ 11 вы можете переадресовать провозгласить enum
, однако:
enum class Items: char;
..., а затем определить его:
enum class Items: char {
PAC = 'C', GHOST = '@', FRUIT = 'o', POINTS = '.', WALL = '#', EMPTY = ' ', UNDEFINED = '+'
};
Заметим, однако, что вы можете использовать теги Enumerator только там, где определение было рассмотрено.
Основываясь на ваших комментариях о нескольких определениях, у вас нет защитников в вашем заголовке, и один и тот же заголовок включается несколько раз. То есть, кажется, вы могли бы иметь заголовок что-то вроде этого:
// items.h
#ifndef INCLUDED_ITEMS
#define INCLUDED_ITEMS
enum Items { ... };
#endif
Судя по ней, вы пытаетесь сложить представление игры в в определении их имен. Это, вероятно, не очень хорошо работает, тем более что они могут изменить внешний вид (например, вы можете использовать PAC
между C
и O
). Скорее всего, фактический код будет говорить об этих именах, и вы будете иметь в нескольких местах. Просто используйте enum
, чтобы определить различные элементы, не образующие какое-либо значение для них и определить их представление в другом месте:
enum Items { PAC, GHOST, FRUIT, POINTS, WALL, EMPTY, UNDEFINED };
extern char ItemDisplay[];
// elsewhere
char ItemDisplay[] = { 'C', '@', 'o', '.', '#', ' ', '+' };
... а затем просто использовать ItemDisplay[item]
всякий раз, когда вам нужно нарисовать item
.
Хм, я не использую C++ 11. Я просто хочу иметь перечисление в config.h. Но если я определяю его там, он говорит мне, что у меня есть несколько определений. Я попытался решить это, объявив его extern и определив его в config.cpp :( – AnnoyedGuy
@AnnoyedGuy: Я понимаю, что вы хотите отделить какое-то объявление от его определения. Однако неясно, чего вы на самом деле пытаетесь достичь! Цель состоит в том, чтобы сконфигурировать 'char', используемый для представления разных игровых фигур, например, вы использовали бы другой подход. –
да перечисления должны представлять игровые фигуры. Какой подход я бы использовал для них? – AnnoyedGuy