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

Respuestas a la pregunta(3)

Su respuesta a la pregunta