Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

russo12

Classes

Mensagens Recomendadas

russo12    0
russo12

boa tarde,

por exemplo, para criar a classe dados_alunos, que contém os campos: nome_aluno, nº_aluno e turma ,  o campo turma pode ficar de que tipo??

NOTA: Neste caso a turma só pode ser A ou B

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
TheDark    0
TheDark

Nesse caso, eu declarava o campo turma com o tipo char, e com modificador private, adicionand dois métodos, getTurma e setTurma, de modo a poder fazer a validação do valor que se pretende inserir no campo.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
mogers    14
mogers

Outra hipótese seria usar um enum. Talvez considere o uso de um enum como a melhor em termos teóricos, mas

On the other hand, there is not an implicit conversion from int to an enum type:

    MyEnumType x = 2;    // should NOT be allowed by compiler

esta é uma funcionalidade que sempre quis. Não gosto nada quando é preciso importar dados dum ficheiro onde temos números e é preciso passar para o enum.

edit: mas compreendo que a funcionalidade que referi não é exequível em C++

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
TheDark    0
TheDark

Podes utilizar

MyEnumType met = static_cast<MyEnumType>(2);

embora isto não faça muito sentido, se à partida sabes qual o valor que queres dar à variávell, e podes usar o valor definido na enumeração.

Utilizando uma variável, o código fará mais sentido. Tens é que ter código para validar o valor inteiro que vais atribuir à variável, algo assim:

enum MyEnumType {
INDEFINIDO = -1,
ZERO = 0,
UM,
DOIS,
TRES,
QUATRO
};

int i = 2;

// ...

MyEnumType met = (i <= QUATRO && i >= 0 ? static_cast<MyEnumType>(i) : INDEFINIDO);

Nota: um tipo enum é automaticamente convertido para int quando usado desta forma.

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


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade