• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

JCPrata

Duvida no cast de Struct para char[]

4 mensagens neste tópico

Boas,

Tenho aqui uma duvida na conversao de uma estrutura para um array de bytes. Ja tentei cast explicitos e nao funciona.

Struct x{

  int a,

  int b,

};

char[] xArray = (char[])x;

Eu queria qualquer coisa deste genero, em que o array de char's/byte's neste caso iria ficar com oito posições ocupadas, devido a um inteiro ocupar quatro bytes. E claro depois também precisava de um cast ao contrario, passar um array de char's para uma Struct.

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Em 1º lugar, estás a declarar mal a variável xArray. Deveria ser:

char xArray[](...)

Depois, o tipo de cast que pretendes só pode ser feito entre apontadores. Por exemplo:

struct xType {
int a;
int b;
};

void main() {
xType x;

x.a=10;
x.b=20;

char *xArray = reinterpret_cast<char*>(&x);

xType *x2 = reinterpret_cast<xType*>(xArray);
}

suponho que já faz o que pretendes. Vê este artigo sobre type casting :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado, pelo menos a compilação não gera qualquer tipo de erro, ainda tenho de testar isto melhor.

Grande site o de C++  :P  nao conhecia, mas fica ja nos meus favoritos ;)

xType *x2 = reinterpret_cast<xType*>(xArray)

Agora neste exemplo, se em vez de eu colocar xType*, colocar uma instancia xType, sera que ha algum problema? (Bem o melhor e compilar)

Abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ali onde está <xType*> estás a dizer o tipo de dados que queres que o compilador interprete. Se utilizares uma instância do tipo já não vai ser um tipo, e irá dar erro ao compilar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora