Desarrollo de videojuegos 3: técnicas avanzadas (2ª edición)

Page 178

[160]

CAPÍTULO 3. TÉCNICAS ESPECÍFICAS

la parte relativa a la clase base. Esto se lleva a cabo como se muestra ✄ en la línea ✂20 ✁del código anterior. Para que se puedan serializar contenedores, simplemente habrá que incluir la cabecera de Boost correspondiente: Listado 3.26: Cabecera de Boost para serializar vector 1 #include <boost/serialization/vector.hpp>

Si se quisiera serializar una list, se usaría list.hpp. A continuación, se muestra un ejemplo de uso donde se ve cómo se rellenan los vectors, para luego serilizar dos los objeto y proceder a recuperarlos en el segundo bloque. Listado 3.27: Uso de un objeto derivado y con contenedores 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

{ ofstream fout ("dataDerivadoCont", ios_base::trunc); boost::archive::text_oarchive outA(fout); ObjetoDerivadoCont oDeriv ("DERIVADO1"); oDeriv.push_int(38); oDeriv.push_int(485); oDeriv.push_int(973); oDeriv.push_int(545); ObjetoDerivadoCont oDeriv2("DERIVADO2"); oDeriv2.push_int(41356); oDeriv2.push_int(765); outA << oDeriv; outA << oDeriv2; } { ifstream fin("dataDerivadoCont", ios_base::binary ); boost::archive::text_iarchive inA(fin); ObjetoDerivadoCont oD; ObjetoDerivadoCont oD2; inA >> oD; inA >> oD2; oD.print(); cout << "\n\n\n"; oD2.print(); cout << "\n\n\n"; }

Con todos los ejemplos anteriores se puede afrontar casi cualquier tipo de serialización. Queda claro que el uso de Boost acelera el proceso, pero aun existen plataformas donde Boost no está portada (aquellas con compiladores que no soportan todas las características de C++, por ejemplo) y donde la STL aun lucha por parecerse al estándar. Es en éstas donde habrá que realizar una serialización más artesana y usar algún tipo de técnica parecida a la vista en las primeras secciones.


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.