Динамическое заполнение перечисления в C++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Динамическое заполнение перечисления в C++

Сообщение Anonymous »

В моей игре на C++ я хочу определить перечисление в моем мировом классе, которое содержит состояния, полученные из элементов внутри векторных «типов объектов» в размещаемом классе. Это значит, что когда я нажимаю кнопку в своем пользовательском интерфейсе для размещения объекта, состояние курсора меняется на Place (это приведет к другим нерелевантным визуальным изменениям, следовательно, к использованию перечисления), так что я соответственно поместю вниз указанный объект, когда я нажимаю на определенную область в моей игре.
Проблема здесь в том, что я не уверен, как определить элементы типов объектов в перечислении, потому что считаю, что вы не можете динамически заполнять перечисление в C++? Альтернативно, есть ли какой-то другой подход, которого мне не хватает?
Мой класс Placeable имеет следующее:

Код: Выделить всё

class Placeable {
private:
std::vector objtypes;
};

Что я пытаюсь отобразить внутри этого перечисления в своем мировом классе:

Код: Выделить всё

class World {
private:
enum CursorState {
Select, // This is the default state

// Array of elements in objtypes goes here

};
CursorState cursorState;
};
Что в идеале соответствует следующему изменению состояния курсора в моем файле World.cpp:

Код: Выделить всё

if (this->mouse->IsButtonReleased(0) && this->popupType != button.type) {
this->popupType = button.type;

// Update cursor state depending on button press
switch (button.type) {
case 1:
cursorState = ;
// Run corresponding effects and log change of state
break;
default:
cursorState = Select,
}
}
Если с моим вопросом что-то не так, дайте мне знать, это мое первое сообщение. Заранее спасибо

Подробнее здесь: https://stackoverflow.com/questions/785 ... -enum-in-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»