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 :

boost::ptr_vector et classe abstraire


Sujet :

Boost C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut boost::ptr_vector et classe abstraire
    J'ai un soucis pour utiliser un ptr_vector de classe abstraite

    à un moment ou un autre lorsque je me sers de mon objet ptr_vector il cherche à instancier via une méthode clone un objet de type classe abstraite ce qui me provoque une erreur de compilation...

    une idée pour contourner ?

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    "Chez moi ça marche !TM"

    Plus sérieusement, il faudrait un peu de code pour essayer de cerner ton problème.

    MAT.

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut
    ok :

    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
    18
    19
    20
    21
    22
    23
     
     
    std::size_t AlertManager::nbAlertShowable(Alert::Type type) const
    {
        return listeAlertShowable(type).size();
    }
     
     
    const ptr_vector<Alert> AlertManager::listeAlertShowable(Alert::Type type) const
    {
        ptr_vector<Alert> vecAlert;
     
        BOOST_FOREACH(const Alert& a, liste_)
        {
            if( a.type() == type && a.status() == Alert::SHOWABLE )
            {
                vecAlert.push_back( a );
            }
     
        }
     
        return vecAlert;
    }
    Alert est abstraite

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Le ptr_vector possède les éléments, je ne sais pas de quoi est fait liste_ mais ça me semble très bizarre de vouloir en recopier des éléments dans un ptr_vector...

    Tu es sûr que c'est pas un std::vector< boost::shared_ptr< Alert > > que tu voulais utiliser à la place ?

    MAT.

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut
    oui bienvu oui.
    liste_ est de type ptr_vector<Alert>
    cela dit je ne vois pas pourquoi ça ne marcher pas, où du moins, si on occulte le côté possession de ptr_vector, pourquoi j'avais cette erreur

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Citation Envoyé par guillaume07 Voir le message
    cela dit je ne vois pas pourquoi ça ne marcher pas, où du moins, si on occulte le côté possession de ptr_vector, pourquoi j'avais cette erreur
    Parce que push_back attend un pointeur (cf. http://www.boost.org/doc/libs/1_43_0...e_adapter.html ) et non une référence (constante).

    MAT.

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut
    Citation Envoyé par Mat007 Voir le message

    Tu es sûr que c'est pas un std::vector< boost::shared_ptr< Alert > > que tu voulais utiliser à la place ?

    MAT.
    Que se passe t-il si l'objet a été effacé du ptr_vector ? boost::shared_ptr pointe sur un objet inexistant ?

    AUTO reposne lol : a priorie oui donc ne ne peut pas combiner les deux

Discussions similaires

  1. Boost sérialisation et classes dérivées.
    Par AF_2.8 dans le forum Boost
    Réponses: 2
    Dernier message: 21/12/2010, 09h57
  2. Boost, serialisation et classe virtuelle pure.
    Par AF_2.8 dans le forum Boost
    Réponses: 3
    Dernier message: 06/12/2010, 10h14
  3. Classe abstraire sans méthode abstraite
    Par 0redd dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 20/08/2010, 23h42
  4. boost::ptr_vector & boost::shared_ptr
    Par guillaume07 dans le forum Boost
    Réponses: 2
    Dernier message: 09/06/2010, 10h38
  5. boost::serialize && boost::ptr_vector
    Par guillaume07 dans le forum Boost
    Réponses: 5
    Dernier message: 24/05/2010, 10h42

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