Escriba casting struct to integer c ++
Tengo un diseño que requiere que los valores estén contenidos en ciertos bits dentro de una palabra de 32 bits. Por ejemplo, los bits 10-15 deben contener el valor 9, y todos los bits restantes son 0. Entonces, por simplicidad / legibilidad, creé una estructura que contiene una versión desglosada de lo que se pide.
struct {
int part1 : 10;
int part2 : 6;
int part3 : 16;
} word;
Entonces puedo configurarpart2
ser igual a cualquier valor solicitado, y establecer las otras partes como 0.
word.part1 = 0;
word.part2 = 9;
word.part3 = 0;
Ahora quiero tomar esa estructura y convertirla en un solo entero de 32 bits. Lo tengo compilando forzando el casting, pero no parece una forma muy elegante o segura de convertir los datos.
int x = *reinterpret_cast<int*>(&word);
Si trato de lanzarlo como de costumbrereinterpret_cast<int>(word)
Obtuve el siguiente error:
invalid cast from type 'ClassName::<anonymous struct>' to type 'int'
Debe haber una mejor manera de hacer esto, simplemente no puedo entenderlo. ¡Gracias por adelantado!
Nota: Debe hacerse en la conversión de estilo c ++, debido a los estándares y demás ...rollo de ojos