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 :

Exception de première chance


Sujet :

C++

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut Exception de première chance
    Bonjour,

    J'obtiens l'erreur

    Exception de première chance à 0x0cdcd5e8 dans maya.exe : 0xC0000005: Violation d'accès lors de l'écriture à l'emplacement 0x0e8cbddc.

    Cela est provoqué par l'instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static_cast<AmCamera*>(mCamera)->getCameraFunction().fullPathName();
    Sachant que :

    - mCamera est de type AmNode*
    - AmCamera dérive de AmNode
    - getCameraFunction() est définie dans AmCamera

    Si je me contente de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static_cast<AmCamera*>(mCamera);
    pas de problèmes.

    getCameraFunction() renvoit un pointeur stocké dans une variable membre.
    Lorsque je passe dedans, je constate que sa valeur n'est pas nulle.

    Merci !

  2. #2
    Membre expérimenté Avatar de Kujara
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 262
    Par défaut
    Pour autant que je me souvienne, le dynamic cast, c'est mal ^^.

    Ca utilise le runtime type info, donc c'est plus lent,et ça necessite une compilation avec la bonne option, et, plus grave pour toi, si la conversion n'est pas possible, ça renvoie null, or, tu ne verifie pas.

    C'est possible que çe soit autre chose, bien sur...

  3. #3
    Membre habitué
    Profil pro
    Expert technique
    Inscrit en
    Mai 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Mai 2005
    Messages : 13
    Par défaut
    Pourquoi un dynamic_cast? un static_cast n'aurait pas suffit ? C'est fort possible que ton erreur vienne de là, si tu peux réessayer avec un static_cast voir si ça tourne (à moins que cela soit nécessaire, sinon y'a pas assez de code pour pouvoir donner une réponse précise)

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    En fait, j'avais initialement un static_cast, et ça faisait la même chose.

    J'ai changé pour voir si ça faisait évoluer la situation...
    Vous savez, les tests stupides qu'on fait tous parfois quand on est au désespoir. :-)

    Je viens de réessayer, et c'est pareil.
    Je l'ai du coup remis dans le message initial, et ai également rajouté d'autres infos au sujet de la fonction...

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Détail que je viens de découvrir :

    L'objet que je veux renvoyer est issu d'une classe qui a surchargé l'opérateur &, et l'a "privatisé".

    Cela pourrait-il être la source du problème ?

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    static_cast<AmCamera*>(mCamera)->getCameraFunction().fullPathName();
    mCamera c'est une référence? et non un pointeur??
    si c'est pas un pointeur alors
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    static_cast<AmCamera*>(&mCamera)->getCameraFunction().fullPathName();

    tu devrait rajouter un p pour explicitement montrer que c'est un pointeur. par exemple :
    m_pCamera : pointeur sur camera
    m_rCamera : reference sur une camera

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Un objet.
    Mais tu as raison pour le préfixage.
    Je vais faire ça.

    Merci.

  8. #8
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par oodini Voir le message
    Un objet.
    .
    donc faut faire cela. Les cast peu convertir un pointeur vers un pointeur et non une instance vers un vecteur.
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    static_cast<AmCamera*>(&mCamera)->getCameraFunction().fullPathName();

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Hmmm... Désolé, j'avais mal lu ton précédent message.
    Je croyais que tu parlais de la valeur que j'étais censé récupérer.

    mCamera est bien un pointeur.

  10. #10
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Es que
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    static_cast<AmCamera*>(mCamera)->getCameraFunction();
    plante?
    ou est tu sur que static_cast<AmCamera*>(mCamera) retourne 0 ?

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    L'instruction ne plante pas, et me permet bien de récupérer ce que je veux.

    C'est simplement que bien plus tard, lorsque je quitte ma DLL, j'obtiens le message sus-mentionné.

    Je commence en fait à croire qu'on n'est pas censé trimbaler ces foncteurs par des appels de fonction.

Discussions similaires

  1. Exception de première chance : stack overflow
    Par Far_Away dans le forum C++
    Réponses: 9
    Dernier message: 02/02/2011, 20h22
  2. Masquer Exception de première chance
    Par Ange44 dans le forum VC++ .NET
    Réponses: 2
    Dernier message: 04/10/2010, 13h09
  3. [Soucis]Exception de première chance (VC++)
    Par Kin0u dans le forum C++
    Réponses: 5
    Dernier message: 31/08/2009, 09h31
  4. Exception de première chance
    Par MohEllayali dans le forum C++
    Réponses: 2
    Dernier message: 04/03/2009, 11h29
  5. Exception de première chance
    Par Oh-Dae-Su dans le forum C++
    Réponses: 6
    Dernier message: 15/05/2008, 14h17

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