Я использую Ogre3, чтобы попытаться создать Spawner, который автоматически создает копии врага и отправляет их в мир. В дополнение к этому, я хочу сохранить функцию поведения, чтобы при появлении сущности она включалась в это поведение, как только она выпадает в мир. Мне было интересно, можно ли это сделать. Я занимался мыслью о переназначении указателей на функции с такой подписью:
void setBehavior (void (* поведение) (враг))
а затем сохранить поведение где-нибудь. Есть идеи, как мне это сделать?
Прочитайте шаблон проектирования «Стратегия».
Указателя на функцию реализации может быть достаточно, более обычным является использование иерархии классов, реализующей различные стратегии, и экземпляр этого передается — сохраняется в unique_ptr<IStrategy>
или что-то подобное. std::function
Стоит задуматься тоже.
Других решений пока нет …