IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

initialisation de ma structure


Sujet :

C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 4
    Points
    4
    Par défaut initialisation de ma structure
    boujour,

    j ai créé une struct et je n arriv pas a initialisé ces champs^^
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    typedef struct pos{
            int nordSud;
            int estOuest;
            int hautBas;
            }direction;
    alors je déclare une variable de ce type j essai l initialisé et je me rappel pas du tout c'est quoi la bonne syntaxe
    voici mes essay :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    direction dir;
    dir->estOuest = 0;
    *dir.hautBas = 0;
    dir.nordSud = 1;
     
    struct pos d;
    *d.nordSud = 1;
    d->estOuest = 0;
    d.hautBas =0;
    et dans tout ces cas ca me met une erreur :

    expected constructor, destructor, or type conversion before '.' token
    expected `,' or `;' before '.' token

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    struct direction
    {
        int nordSud;
        int estOuest;
        int hautBas;
    };
     
    direction dir;
    dir.nordSud  = 1;
    dir.estOuest = 0;
    dir.hautBas  = 0;

  3. #3
    Membre averti Avatar de Kujara
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 262
    Points : 358
    Points
    358
    Par défaut
    Citation Envoyé par toniounou Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    typedef struct pos{
            int nordSud;
            int estOuest;
            int hautBas;
            }direction;
    Le typedef c'est du standard C, ici on fait du c++ ( sauf si tu t'es trompé de forum ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    struct direction{
            int nordSud;
            int estOuest;
            int hautBas;
            };
    Et pour y acceder :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    direction a;
    a.nordSud = 0;

  4. #4
    Membre éclairé Avatar de befalimpertinent
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2007
    Messages : 561
    Points : 833
    Points
    833
    Par défaut
    Si c'est pour initialiser tu peux aussi redéfinir le constructeur par défaut.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    struct Direction
    {
      int nordSud;
      int estOuest;
      int hautBas;
      Direction() : nordSud(1),estOuest(0),hautBas(0){};
    };
    Linux > *

  5. #5
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    merci a tous , finalement j avai juste mal déclarer ma structure
    je vais donc retirer le typedef
    merci encor

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    j avais regardé le lien Mongaulois mais cette méthode m'avais semblé un peu plus confuse

    mais j ai encor un problème : dans l initialisation de mes champ :
    la méthode de befalimpertinent fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    struct Direction
    {
      int nordSud;
      int estOuest;
      int hautBas;
      Direction() : nordSud(1),estOuest(0),hautBas(0){};
    };
    hors j ai une autre structure que je ne peu pas initialisé par defaut
    voici le morceau de code posant problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    struct direction
    {
        int nordSud;
        int estOuest;
        int hautBas;
    };
     
    direction dir;
    dir.nordSud  = 1;
    dir.estOuest = 0;
    dir.hautBas  = 0;
    expected constructor, destructor, or type conversion before '.'
    expected `,' or `;' before '.' token

    je ne comprend pas cette erreur qui ce produit a chaque affectation juste apres avoir déclaré ma structure mais pas plus loin dans mon code quand je l utilise.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    c'est exactement ce que je fait mais :

    ca me met l erreur cité dans mon dernier post je comprend vraiment pas

  9. #9
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Ca c'est du C.

  10. #10
    Membre éclairé Avatar de befalimpertinent
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2007
    Messages : 561
    Points : 833
    Points
    833
    Par défaut
    Tu ne peux tout simplement pas créer une instance de direction et l'initialiser de cette façon en dehors de toute fonction.

    Si dir est une variable globale, le constructeur par défaut suffit à l'initialiser. Mais pour pouvoir spécifier les valeurs des attributs comme tu le fait tu dois être dans un fonction.
    Linux > *

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    en fait je doit faire une fonction pour initialisé ma structure?

    merci de votre aide ; ca a l'air de marché :-)

  12. #12
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 366
    Points : 444
    Points
    444
    Par défaut
    Ce que tu veux faire est une initialisatino par défaut, donc je ne vois pas pourquoi tu ne pourrais pas utiliser le constructeur.

    Sinon à part pour les déclarations et les affectations de variables globales ou static, tout doit êter fait dans des fonctions ou fonction membre d'objet.

  13. #13
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 279
    Points : 11 011
    Points
    11 011
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    struct toto_a_la_C {
        int a;
        std::string b;
    };
     
    toto_a_la_C global_toto1 = { 42, "titi"};
     
    struct titi_a_la_Cpp {
        int a;
        std::string b;
        titi_a_la_Cpp(int un_a = 42, std::string const& un_b = "titi")
        : a(un_a), b(un_b)
        {}
    };
     
    titi_a_la_Cpp global_titi;
    titi_a_la_Cpp global_tutu(12, "tutu");
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. initialisation d'une structure
    Par num09 dans le forum Débuter
    Réponses: 3
    Dernier message: 31/10/2008, 00h30
  2. initialisation d une structure
    Par rsouissi dans le forum C++
    Réponses: 1
    Dernier message: 21/04/2008, 13h46
  3. New n'initialise pas la structure
    Par ShaiLeTroll dans le forum Langage
    Réponses: 3
    Dernier message: 27/12/2007, 18h53
  4. initialisation d'une structure
    Par ryadh.naouar dans le forum C
    Réponses: 3
    Dernier message: 29/10/2007, 15h21
  5. [Initialisation] Remplir une structure une fois
    Par Kimael dans le forum Langage
    Réponses: 14
    Dernier message: 08/06/2004, 15h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo