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

russo12

Classes

5 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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++

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

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