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

Boost C++ Discussion :

Transformer Boost::optional <Field> en Field


Sujet :

Boost C++

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Junior
    Inscrit en
    Septembre 2011
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Septembre 2011
    Messages : 170
    Points : 177
    Points
    177
    Par défaut Transformer Boost::optional <Field> en Field
    Bonjour, j'essaye désespérément de transformer un Boost::optional <Field> en Field..

    Je vous donne une partie de mon code commentée, en espérant que vous connaissez la réponse, je ne trouve nulle part une erreur semblable à la mienne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    /* Field est un objet que j'ai construit */
     
    field_type = field_for_name(field_mysql->name); // field_type est un Field et field_for_name renvoie un boost::optional<Field>
     
    _t_asso_nomcolonnes[field_type] = nbcolonnes; // _t_asso_nomcolonnes prend comme paramètre un Field
     
    error: cannot convert ‘boost::optional<Field>’ to ‘Field’ in assignment
    Je suis perdu, je vois totalement d'ou vient mon probleme, je ne peux pas ajouter un boost::optional<Field> à mon tableau car c'est un tableau de Field, mais je ne sais pas comment faire la conversion de boost::optional<Field> en Field :/

    Merci d'avance pour vos conseils !

  2. #2
    En attente de confirmation mail

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Points : 3 311
    Points
    3 311
    Par défaut
    Bonjour,

    La doc : http://www.boost.org/doc/libs/1_50_0.../synopsis.html (+ la page suivante pour les détails de ce que font les fonctions).

    Tu ne penses pas qu'il va y avoir un problème si tu fait "juste" une création d'un Field depuis un boost::optional<Field> ? Et si le retour, optionel, n'existe pas par exemple ?

    Il faut que tu tests d'abord que le boost::optional est bien initialisée avant d'éventuellement utiliser la valeur.

    NB: J'ai l'impression que la description de l'opérateur bool() (enfin son équivalent) dans la doc, est pas super clair par contre.

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur Junior
    Inscrit en
    Septembre 2011
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Septembre 2011
    Messages : 170
    Points : 177
    Points
    177
    Par défaut
    Je pense avoir trouvé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    boost::optional < Field > test_value_returned;
    test_value_returned = field_for_name(field_mysql->name);
    assert ( field_type == test_value_returned );
    je ne sais pas si ça peut marcher, en tout cas il n'y a pas d'erreur dans le debugger...
    J’éditerais ce message quand j'aurais finit mes cas de tests.
    Merci pour la doc

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur Junior
    Inscrit en
    Septembre 2011
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Septembre 2011
    Messages : 170
    Points : 177
    Points
    177
    Par défaut
    bon, en fait c'etait vraiment simple ..

    Voici la réponse à mon soucis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    boost::optional < Field > field_name;
                field_name = field_for_name(field_mysql->name);
                if (field_name != NULL)
                {
                    // initialised
                    _tab_asso_nomcolonnes[*field_name] = nbcolonnes; // *field_name is no longer a boost::optionnal <Field> but a Field
                    nbcolonnes++;
                }

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

Discussions similaires

  1. order by field() avec option like !
    Par travailmichel dans le forum Requêtes
    Réponses: 6
    Dernier message: 07/09/2010, 16h00
  2. [SP-2007] RenderPattern appelant un field de PropertySchema/Fields
    Par nonoxp dans le forum SharePoint
    Réponses: 0
    Dernier message: 13/08/2010, 17h52
  3. tutoriel sur boost.optional sur le site
    Par nikko34 dans le forum Contribuez
    Réponses: 9
    Dernier message: 03/02/2009, 14h17
  4. Probleme sur le Fields des fichiers Xmlgram
    Par Sandrine75 dans le forum XMLRAD
    Réponses: 4
    Dernier message: 20/03/2003, 17h09

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