Тип класса при десериализации в c ++ - PullRequest
1 голос
/ 25 апреля 2010

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

1 Ответ

3 голосов
/ 25 апреля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...