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 :

Pb de compilation avec dynamic_pointer_cast


Sujet :

Boost C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Par défaut Pb de compilation avec dynamic_pointer_cast
    Bonjour,

    J'ai une erreur etrange de compilation que j'aimerais bien que l'on m'explique.
    Voici un extrait de code qui compile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    shared_ptr<Base> base;
    shared_ptr<Derivee> derivee;
    ...
    switch(...)
    {
    case 0:
    derivee = dynamic_cast_pointer<Derivee>(base);
    derivee->f();
    break;
     
    default:
    break;
    }
    Mais si je deplace la declaration de derivee dans le case comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    shared_ptr<Base> base;
    ...
    switch(...)
    {
    case 0:
    shared_ptr<Derivee> derivee = dynamic_cast_pointer<Derivee>(base);
    derivee->f();
    break;
     
    default:
    break;
    }
    Ben la ca passe plus (alors que si j'utilise des pointeurs standards avec un dynamic_cast, ca passe toujours.

    Voici le message d'erreur sous gcc :

    cimd2.cpp:106: error: jump to case label
    cimd2.cpp:100: error: crosses initialization of `boost::shared_ptr<Derivee> derivee'
    cimd2.cpp:106: warning: destructor needed for `derivee'
    cimd2.cpp:106: warning: where case label appears here
    cimd2.cpp:106: warning: (enclose actions of previous case statements requiring destructors in their own scope.)

    Ce qui le gene c'est que la variable derivee soit declaree dans le scope du case, mais je ne vois pas le probleme, d'autant plus que l'objet Derivee possede egalement un destructeur.

    Votre aide sera la bienvenue.

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Par défaut
    Bon, j'ai trouve, il suffisait de rajouter des accolades dans le case.

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

Discussions similaires

  1. Problème à l'exécution avec wxWindows (compilé avec BCC55)
    Par ShootDX dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 14/11/2003, 18h04
  2. Réponses: 1
    Dernier message: 29/10/2003, 12h16
  3. Problemes de compilation avec g++ sous linux
    Par Selimmel dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 19/09/2003, 13h43
  4. [JB9][EJB]Compiler avec Make ou javac ?
    Par _gtm_ dans le forum JBuilder
    Réponses: 4
    Dernier message: 11/07/2003, 15h59
  5. Compilation avec un Makefile
    Par Mau dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 28/02/2003, 11h30

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