2010-04-25 2 views
1

Я разрабатываю игровой редактор в C++. Я реализовал механизм отражения с помощью DiaSDK. Теперь я хочу сохранить состояние объектов (например, Camera, Lights, Static mesh) в файле некоторого уровня с помощью сериализации. И позже можно получить их состояние через десериализацию. Сериализация объектов для меня не проблема. Во время десериализации я получаю тип класса в виде строки. Так как создать экземпляр объекта с использованием этой строки типа класса, чтобы я мог создавать объект этого конкретного типа.Тип класса при десериализации в C++

ответ

3

Когда вы сериализуете класс, вам нужно будет выпустить его тип времени выполнения, чтобы при десериализации вы могли создать экземпляр правильного типа. В противном случае невозможно определить, какой тип времени выполнения использовать.

Хорошая методика построения классов на основе строки типа заключается в построении хэш-карты из имен классов на фабричные объекты, способные создавать такой тип. Вам нужно будет создать это сопоставление, основанное на типах, которые вы, возможно, будете десериализовать. Если этот набор типов может измениться, то общий подход заключается в том, чтобы предоставить средства, с помощью которых завод может быть «зарегистрирован» или «удален из регистрации» с картой для определенного имени.

+0

Я думаю, что он занимается созданием экземпляра из строки типа объекта, скажем, что вы знаете тип объекта «камера», и он хочет создать экземпляр этого класса. – Xinus

+0

@ Xinus, ты прав. Я считаю, что вопрос был обновлен, так как я изначально опубликовал свой ответ, но с тех пор обновляюсь. –

Смежные вопросы