Вы не можете сделать это. Вектор - это класс, который обычно реализуется с внутренним указателем на динамическую память, который меняет местоположение по мере роста вектора.
Когда вы пытаетесь сериализовать вектор путем приведения всей вашей структуры, вы просто сериализуете указатель на память, содержащую содержимое вектора, вы не получаете само содержимое, потому что оно не является частью этой структуры.
Вам придется индивидуально сериализовать все элементы в векторе один за другим и отдельно добавить их обратно при десериализации.
Обратите внимание, что вы можете изменить вектор пуль на массив статического размера внутри структуры, и тогда он будет непрерывным в памяти, и вы можете просто сериализовать всю структуру - и вы также можете сделать последний элемент массива массив из одного маркера, а затем выделите память для структуры size + (x-1) * sizeof (Bullet), что позволит вам перезаписать массив 1 для всей дополнительной памяти, которую вы добавили. Это также может быть непрерывным в памяти, что позволяет довольно легко сериализовать всю область памяти.
Вам также следует обратиться к htonl, ntohl, htons, ntohs и начать упорядочивать байты в сети, а также, если вы собираетесь отправлять их по сети, чтобы исключить возможность байтовой байтовости для некоторых других системы, которые вы можете использовать.