Приведите несколько векторов к пустоте *

В настоящее время я работаю над Roguelike, где у меня есть несколько разных очередей событий (в форме векторов), которые обрабатывают несколько разных категорий событий. Вернее, разные игровые объекты имеют свои собственные очереди событий.

В данных тайла карты у меня есть специальная триггерная структура, которая активируется, когда игрок (или что-то еще) входит в тайл. Эта структура листов предоставляет данные для генерации флага события, который затем необходимо поместить в соответствующую очередь событий.

Структура плитки выглядит следующим образом:

struct tile{
int t_type;
trigger t_dgram;

vector<actor*> occupied;
vector<item*> loot;
public:
void trigger_tile(int ns, int we, );
};

Сама структура триггера может содержать информацию для определения, какая очередь является подходящей, но невозможно удерживать указатели на все возможные очереди событий для каждого тайла на карте, особенно потому, что у меня есть карты, динамически генерирующие местность на лету для бесконечных карт ,

Таким образом, вопрос состоит из двух частей: было бы неплохо приводить вектор к пустому указателю при вызове функции:

void tile :: trigger_tile(int ns, int we, void *queue_ob);

tile Сам объект сможет определить правильный тип вектора очереди и разыменовать пустой указатель, используя trigger t_dgram переменная-член, но разве это хорошая идея? Есть ли какая-то опасность для этого, о которой я не знаю?

Как бы вы лично предложили мне добиться подобного эффекта?

Спасибо за ваше время.

0

Решение

«Триггер» звучит для меня как класс.

struct Trigger {
virtual void triggeredOn(tile *tile) = 0;
}

затем tile имеет указатель на свой триггер:

struct tile{
...
...
Trigger *trigger;
void trigger_tile(int ns, int we, ){trigger.triggeredOn(this)};
};

Теперь классы производные от Trigger может содержать указатели на любые очереди или даже делать то, что не связано с очередями.

1

Другие решения

Таким образом, вопрос состоит из двух частей: было бы неплохо приводить вектор к пустому указателю при вызове функции:

Нет, это не звучит правильно. Возможно, вы хотели навести указатель на вектор void*, который будет в порядке, пока нижестоящая функция, которая использует void* бросает обратно к указателю вектора перед доступом к элементам вектора.

0

По вопросам рекламы [email protected]