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 d'une structure


Sujet :

C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 2
    Par défaut initialisation d'une structure
    Bonjour,

    je suis débutantet j'ai trouvé un problème lors de la compilation du a l'initialisation d'une structure

    si on a la structure qcm définie comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct QCM {
        string question;
         vector <string> reponses;
         int solution;
     }

    peut-on initialiser une variable d de type QCM dans le main de cette manière

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QCM d = {"est_ce que c'est possible",(2,"oui"),1);
    autrement dit comment peut-on reinisialiser un vecteur (meme s'il n'est pas dans une structure) ;i.e sèparement de la dècalaration.
    merci

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Il n'est pas actuellement possible d'avoir une écriture aussi simple que celle-ci.

    L'ajout d'un constructeur permettrait d'avoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    vector<string> reponse;
    reponse.push_back("oui");
    QCM d ("est_ce que c'est possible",reponse,1);
    On peut avoir "mieux" en utilisant boost::assign, mais c'est je trouve trop à la limite de la bidouille.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 2
    Par défaut
    merci !!

    on peut declarer et initialiser un vectuer de cette facon

    vector<string> rep(2,"oui");

    permettant d'initialiser rep de taille 2 et de remplir les deux cases par "oui"
    donc d'aprés ce que vs disez j peux pas faire une telle initialisation ds une structure
    (j'insiste la car dans votre code la taille n'est pas mentionnée ,je sais que ca change pas grande chose mais..)

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Comme l'a dit JolyLoic, ce n'est pas possible à ce jour, et la solution passant par un constructeur est sensiblement la meilleure.

    Ceci dit, je présumes que les QCM ne seront pas écrites en dur dans le code...

    J'entends par là qu'il y a de fortes chances qu'elles soient sauvegardées d'une dans un fichier quelconque.

    Tu pourrais donc envisager une foule de possibilités plus ou moins sympa de remplir le vecteur...

    Cela pourrait aller d'un constructeur de QCM qui serait proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    QCM::QCM(std::ifstream& ifs)
    {
        ifs>> question;
        while(! finPropositions) //finProposition serait un moyens de savoir
                                 //que la dernière proposition a été traitée
        {
            std::string temp;
            ifs>>temp;
            reponses.push_back(temp);
        }
        ifs>>solution;
    }
    à une méthode statique qui parse le fichier et qui renvoie un CQM tout beau tout propre sous la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    static QCM readQuestion(std::ifstream& ifs)
    {
        std::string question;
        std::vector<std::string> reponses;
        int solution;
        /* lecture du fichier à la recherche de ces données */
        QCM ret;
        ret.question = question;
        ret.reponses = reponses;
        ret.solution = solution;
        /* nous aurions pu utiliser le constructeur proposé par JolyLoic sous la
         * forme de return QCM(question, reponse, solution);
        return ret;
    }
    en passant par encore bien d'autres solutions plus ou moins originales
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. déclaration/initialisation d'une structure
    Par boboss123 dans le forum C
    Réponses: 8
    Dernier message: 22/09/2010, 17h05
  2. [Débutant] Initialisation d'une structure
    Par Mat32 dans le forum MATLAB
    Réponses: 3
    Dernier message: 21/09/2010, 21h58
  3. initialisation d une structure
    Par rsouissi dans le forum C++
    Réponses: 1
    Dernier message: 21/04/2008, 13h46
  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