Выполнение «правда» динамическое приведение во время выполнения?

Таким образом, я все еще работаю над гибкой системой сценариев для этого школьного проекта и пришел к дорожному блоку. Проблема заключается в следующем: у меня есть интерфейс диспетчера состояний сценариев, который будет реализовывать любое состояние сценариев (в настоящее время реализует lua, но хочу иметь возможность добавлять python позже). Он имеет чисто виртуальные функции для таких вещей, как DoFile, DoString, RegisterObject и RegisterFunction. Таким образом, LuaStateManager реализует этот интерфейс с использованием классов luaplus и инкапсулирует объект LuaState, как и должно быть.

Поэтому, когда объект регистрируется с помощью lua и бросает все свои методы в метатабельный объект, я должен сделать что-то вроде этого:

metaTable.RegisterObjectDirect(“Move”, (Actor*)0, &Actor::Move);

Это было бы хорошо, если бы у меня был доступ к базовому объекту состояния в интерфейсе StateManager, так как он вызывался бы из самого класса Actor, поэтому приведение могло быть гарантировано. К сожалению, мне нужно как-то передать эту информацию методу LuaState :: RegisterFunction, чтобы мне не нужно было выставлять объект LuaState и связывать с ним мои классы. Однако, насколько я понимаю, нет способа передать информацию о том, к какому типу класса приводиться.

Есть ли у кого-нибудь предложения? Я думал о попытке использовать шаблонную функцию для выполнения приведения, но я знаю, что вы не можете иметь указатели на шаблоны, так что это не из окна. Спасибо!

0

Решение

Задача ещё не решена.

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


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