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 :

bon usage de in_place_factory


Sujet :

Boost C++

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par défaut bon usage de in_place_factory
    J'ai une structure comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    template<class A, class B>
    struct element
    {
    	A a_;
    	B b_;
    	element(A const & a):a_(a) {}
    };
     
    ...
     
    element<int, std::string> e(25);//ok
    Le membre b_ est construit avec son constructeur par défaut.
    J'aimerais modifier la structure element de sorte à pouvoir construire B en utilisant une factory, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    template<class A, class B>
    struct element
    {
    	A a_;
    	char b_[sizeof(B)];
    	template<class F>
    	element(A const & a,F const & f):a_(a) {f.apply<B>(b_);}
    	~element() {reinterpret_cast<B *>(b_)->~B();}
    };
     
    ...
     
    element<int, std::string> e(25, boost::in_place("toto"));//ok
    Mais ça ne me satisfait que moyennement. N'y aurait-il pas plus "propre" ?

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Boost.In Place Facroty se marie bien avec Boost.Optional mais la sémantique est un peu différente.

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par défaut
    En effet, merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    template<class A, class B>
    struct element
    {
    	A a_;
    	boost::optional<B> b_;
    	template<class F>
    	element(A const & a,F const & f):a_(a), b_(f) {}
    };
     
    ...
     
    element<int, std::string> e(25, boost::in_place("toto"));//ok
    En regardant le code, optional encapsule un code proche du mien, avec des options en plus dont je n'ai pas besoin (et qui prennent de la place).
    Donc mon code initial est bon, il est juste "pas beau". Il suffirait de l'encapsuler dans un template qui le cache

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Boost option est un peu plus que ça : il gère aussi la notion de variable non initialisée et peut servir à ça.
    Mais, je me suis souvent demandé quel cas pouvaient être les mises en oeuvres des boost in place factory sans un code qui ressemble plus moins à ce que tu montres.

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

Discussions similaires

  1. du bon usage de ONCLICK
    Par devboy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/05/2007, 15h52
  2. Bon Usage : Constructeur ou Load
    Par gridin dans le forum VB.NET
    Réponses: 1
    Dernier message: 10/05/2007, 07h48
  3. [Delphi - Firebird] Comment faire bon usage des transactions?
    Par Lili21 dans le forum Connexion aux bases de données
    Réponses: 2
    Dernier message: 07/05/2007, 20h59
  4. Quel est le bon usage des fichiers "*.bpk" ?!
    Par bnadem35 dans le forum C++Builder
    Réponses: 3
    Dernier message: 12/09/2006, 17h31
  5. [xml] bon usage du xml
    Par Jeddo dans le forum XML/XSL et SOAP
    Réponses: 8
    Dernier message: 02/05/2005, 16h49

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