Transferts en C ++ (enum)

Noter cet article





énumération C ++, c ++ liste, énumération c ++, enum c ++

transfert (enum) utilisé pour créer des constantes d'un C. Supposons qu'il est nécessaire de déclarer des constantes pour chacune des notes de musique et d'initialiser le numéro de série approprié. Vous pouvez utiliser une façon familière:

énumération C ++, c ++ liste, énumération c ++, enum c ++

Cette déclaration prend beaucoup de lignes de code et ne convient pas. Utilisation de fiche, Ces constantes peuvent être déterminées autrement. syntaxe enum similaire à la syntaxe structures: mot-clé – descripteur – éléments entre accolades, séparés par des virgules :

énumération C ++, c ++ liste, énumération c ++, enum c ++

Ceci est la forme complète – descripteur (le nom de l'énumération). Comme dans le cas avec structures, indiquant le nom, vous ne pouvez pas utiliser:

énumération C ++, c ++ liste, énumération c ++, enum c ++

Dans le premier cas, – nous pouvons créer des variables de type liste notes. Dans le second cas, – aucun.

S'il vous plaît noter, que la valeur 1 Il a été donné uniquement au premier élément de la liste. Par défaut, le premier élément dans les accolades sont affectées d'une valeur 0, le second plus (1), la troisième est l'un de plus que le deuxième (2) etc. Mais si vous définissez explicitement la valeur, comme dans l'exemple, l'augmentation de l'appareil commence avec ce nombre. Nous allons montrer à l'écran les valeurs de certains éléments de l'énumération.

La console affiche:énumération C ++, c ++ liste, énumération c ++, enum c ++

Bien que nous ne sommes pas attribuer des valeurs explicitement et SOL – ils gardent les numéros de série de notes correctes.

Les noms des agents recenseurs (articles énumérés) doit être unique. Les valeurs peuvent aussi être identiques:

sens 1 gardera KLICHKO_VITALIY et KLICHKO_VLADIMIR. 2 zapishetsya dans Chisora, 3 – dans ADAMEK . Les éléments énumérés peuvent être enregistrés uniquement des nombres entiers. Changement dans le programme suivant les valeurs, sont affectés aux éléments entre accolades ne peut pas être. Si vous créez une variable de type liste – il ne peut prendre la valeur de l'un de ses éléments:

énumération C ++, c ++ liste, énumération c ++, enum c ++

La photo montre, que le dossier type de variable du numéro champions est impossible. Vous ne pouvez enregistrer une constante nommée, qui est déclarée au moment de la détermination enum.

Par exemple, envisager la fixation. Dans ce créer un transfert levelsName. Il contiendra six éléments – “nom” étages. Offre d'utilisateur “aller pour un lecteur” l'ascenseur.

Nous déclarons une variable entière sol en ligne 10 et initialiser le nom constant parking. si sol valorisera 0. En ligne 13 entrer tandis que la boucle. Tant que l'utilisateur entre dans une variable exitOrNot sens 0, le programme va lui offrir “prendre l'ascenseur” – sélectionner le numéro de l'étage. Après chaque étages de sélection des sons d'alarme (Trois bips courts) et affiche le numéro de l'étage, et des informations sur, qui est placé sur elle. Pour ce faire, sélection instruction switch. Ses blocs cas la liste des éléments triés. Autrement dit, l'utilisateur saisit un nombre entier, et cas recherche, lequel des éléments énumérés il répond. par exemple, si elle est introduite 5 – ce qui correspond à un élément Restaurant – affiche un message.

résultat:

énumération C ++, c ++ liste, énumération c ++, enum c ++

Regardez une courte vidéo sur le transfert C ++. Il est en anglais, mais il est facile de comprendre, après avoir lu l'article:

Pour soutenir notre site – cliquez sur la tirelire et choisir un moyen pratique.

Bulletin de nouvelles leçons sur la programmation:

6 réflexions sur "Transferts en C ++ (enum)

  1. exemples normaux, et je ne l'ai pas lu l'article.

    Je formule, comme vous s'il vous plaît redressez, si l'article je me suis cassé dans quelque chose.

    1) Les nombres magiques – il est mauvais, pour se débarrasser de leur utilisation constante.

    2) constantes – il est bon, mais les constantes sont étroitement liés les uns aux autres.

    exemple: le programme que nous avons une unité. Une unité peut être un magicien, gobelin ou elf. Un mode de réalisation de ce pourrait être quelque chose:

    const int Mag = 1;
    const int Goblin = 2;
    const int Elf = 3;

    Unité struct {
    nom de chaîne;
    int UNIT_TYPE;
    };

    évidemment, il est mauvais, parce que:
    2.1) Mag constant, Lutin, Elf accessible à tous, à savoir. polluer l'espace de noms;
    2.2) constantes peuvent être utilisées de façon aléatoire dans le mauvais contexte, parce qu'ils ne sont pas groupés, à savoir. Il est pas différent des autres constantes;
    2.3) champ UNIT_TYPE, vous pouvez affecter la valeur erronée (le compilateur ne nous renseigne pas sur une erreur) :
    unit.unit_type = -123;
    2.4) Nous avons besoin de s'inventer valeurs des constantes et moniteur de sorte qu'ils ne se reproduisent pas.

    Tous ces problèmes érotiques décide enum:

    enum UnitType { Mag, Lutin, Elfe };
    Unité struct {
    Type UNIT_TYPE;
    nom de chaîne;
    };

    reportez-vous aux constantes que nous pouvons à la fois directement (Mag) et le dénombrement nommé (Type d'unité::Mag). La deuxième option est clairement le contexte indique, mais il semble apparaître en C ++ 11 (plus tôt, il a maintenu la plupart des compilateurs, mais standard comme car il ne correspond pas à).

    unit.unit_type = 123;
    échouera au moment de la compilation (à savoir. très tôt). Et si vous yuzaete IDE moderne – plus tôt (IDE soulignera l'erreur).

    Eh bien, les valeurs qui leur sont assignés automatiquement, suivez ce n'est pas nécessaire.

    Le code peut être un plus joli de bits:
    Unité struct {
    type de unum {Mag, Lutin, Elfe} type;
    nom de chaîne;
    };

    Cela peut être mieux, tk. évidemment, cette unité et type inextricablement liés (avant de l'encoder au nom UnitType). Encode quelque chose dans le nom est pas très bon, par exemple, si l'unité est rebaptisée Item – il faudrait renommer ItemType, ou une liaison ne serait pas évidente.
    Unité::Type::Mag définit succinctement le contexte, dans lequel la constante peut être utilisé.

  2. Ma version de résoudre le problème de l'exemple:
    pre class =”seulement:c ++ décodage:vrai ”

    #comprendre
    using namespace std;

    int main()
    {
    setlocale(LC_ALL, “rus”);
    lewels enum {undParking = -1, oneFloor = 1, = SecondFloor 2, restaurant = 3, Penthouse = 4};
    int ascenseur = 0;
    int sortie = 1;
    cout <<"Вы зашли в здание и сейчас находитесь на " << un étage << " этаже \n";
    faire
    {
    cout <> ascenseur;
    interrupteur (ascenseur)
    {
    cas(undParking):
    cout << "Вы попали в подземную автостоянку \n";
    Pause;
    cas(un étage):
    cout << "Вы на первом этаже \n";
    cout <> Sortie;
    si (sortie == 0)
    {
    cout << "Вы вышли из здания \n";
    }
    Pause;
    cas(deuxième étage):
    cout << "Вы на втором этаже \n";
    Pause;
    cas(Restaurant):
    cout << "Вы в ресторане \n";
    Pause;
    cas(auvent):
    cout << "Вы в пентхаусе \n";
    Pause;
    défaut:
    cout << "Нет такого этажа \n";
    }
    } tandis que (sortie == 1);
    retour 0;
    }

    /pré

    1. Цитата из описания языков C и C++:
      > В версии С89 определено 32 ключевых слова.
      > …
      > enum — Пользовательский тип данныхперечисляемый тип
      > …
      > В языке C++ содержатся все ключевые слова, определенные в версии С89, а также следующие.

      И где здесь различие?

Laisser un commentaire

Placez le code dans les balises: <pre class="lang:c ++ décodage:true ">VOTRE CODE</pré>