Digite struct de conversão para c ++ inteiro

Eu tenho um design que requer que os valores sejam contidos em determinados bits dentro de uma palavra de 32 bits. O exemplo dos bits 10 a 15 deve conter o valor 9, com os bits restantes sendo 0. Portanto, para simplificar / legibilidade, criei uma estrutura que contém uma versão detalhada do que é solicitado.

struct {
    int part1 : 10;
    int part2 : 6;
    int part3 : 16;
} word;

Eu posso então definirpart2 seja igual a qualquer valor solicitado e defina as outras partes como 0.

word.part1 = 0; 
word.part2 = 9;
word.part3 = 0;

Agora eu quero pegar essa estrutura e convertê-la em um único inteiro de 32 bits. Eu o compilei forçando a transmissão, mas não parece uma maneira muito elegante ou segura de converter os dados.

int x = *reinterpret_cast<int*>(&word);

Se eu tentar transmiti-lo normalmentereinterpret_cast<int>(word) Estou tendo o erro a seguir:

invalid cast from type 'ClassName::<anonymous struct>' to type 'int'

Deve haver uma maneira melhor de fazer isso, eu simplesmente não consigo entender. Desde já, obrigado!

Nota: deve ser feito no estilo c ++, devido aos padrões e outros enfeites ...revirar os olhos

questionAnswers(3)

yourAnswerToTheQuestion