Нужна помощь?
Создайте тему в соответствующем разделе
Не нужно писать всё в чат!Загляните на торговую площадку
Там вы можете купить
всё что касается игровых серверовНе хотите бан?
Пожалуйста, ознакомьтесь с нашими правилами
Не нарушайте порядок!Продаёте или покупаете?
Пользуйтесь услугами гаранта
Мы сделаем вашу сделку безопасной
- 0
Войдите, чтобы подписаться
Подписчики
0
Экземпляры класса, массив типа map и загрузчик Json
Спросил
BorizzK
-
Наш выбор
-
Создаем свой серверный мод. [DayZ 1.4 to Discontined]
123new опубликовал тему в Версия 1.0 и выше,
-
Увеличение карты х2
vitacite опубликовал тему в Картостроение,
Смысл таков
1 Есть класс A хранилка с переменными и массивом типа map<PlayerBase, int> (используется только во время работы - хранение ссылок на персов игроков и время в минутах - для конфига не нужен)
массив определяется с модификатором static что бы он не сохранялся в json (да и не нужно его сохранять) - Ибо при загрузке будет ошибка, тк загрузчик json может работать с подобными массивами если они содержат данные типа string, int и bool (да же float не может)
2 Есть внешний массив R типа этого класса в котором хранятся ссылки на экземпляры класса A
3 Есть класс B где создаются экземпляры класса A, переменным в классе A присваиваются значения и ссылки на экземпляры класса А помещаются в массив R
4 Есть класс C функция которого в последствии сохраняет все значения всех экземпляров класса А в json
5 В последствии если есть сохраненные даненные функция класса C загружает из json все данные в через массив R в содающиеся автоматом экземпляры класса А
Проблема следующая
Если в п 3 при создании экземпляров их инициализация проходит классически, все инициализируется как надо, с выполнением конструктора в каждом экземпляре, в каждом классе создается свой уникальный экземпляр массива map и ссылка на него помещается в соответствующую переменную, то при загрузке из json картина более чем странная:
При загрузке данных в массив R
1 Создается нужно количество экземпляров класса A и все правильно помещаются в массив R
2 Все экземпляры уникальны
3 НО! При создании экземпляров конструктор не выполняется!
4 НО! При создании экземпляров массив map не создается - те полный игнор ref map<PlayerBase,int> R = new ref map<PlayerBase,int>;
подумал и перенес R = new ref map<PlayerBase,int>; в отдельную функцию Init() класса A
после загрузки из json в цикле прохожу по массиву R и из каждого экземпляра класса вызываю эту функцию R.Get(i).Init();
Все нормально, все работает, НО!
Экземпляр массива map создается 1 раз! в первом экземпляре класса А, во всех остальных ссылка всегд указывает на него же - те нет уникальности
Можно конечно сделать еще один класс для хранения динамических данных, но оч не хочется плодить классы
Вопрос в первую очередь комраду Ultima - такое поведение движка это баг или фича? Или это из-за static ?
Бегемоты должны быть передушены!
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах