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 :

"Bad ptr" : impossible d'accéder à une donnée membre


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 49
    Par défaut "Bad ptr" : impossible d'accéder à une donnée membre
    Bonjour,
    J'ai les classes suivantes :

    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
     
    struct Data
    {
     string name ;
    };
     
    class Loader
    {
    public:
    Data obj[100] ;
    }
     
    void main()
    {
    Loader * loader = new Loader();
    loader->obj[0].name ; //Et bien cette ligne plante et me donne un "bad ptr" !!
    }
    la variable "name" est initialisée correctement dans le constructeur de Loader,
    mais à la ligne suivante c'est une donnée invalide et ça plante, savez vous pourquoi et comment puis je faire ?

    PS : j'ai déjà essayé de remplacer le type string de "name" par char * ou vector <char> mais rien y fait...

  2. #2
    Membre éclairé

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 356
    Par défaut
    Il ne faudrait pas mettre obj et name en public ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 49
    Par défaut
    Oui désolé mais je viens de corriger :
    name est dans une struct (donc tout est public) et obj est en public et le problème a bien lieu dans ce cas de figure là.

  4. #4
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Aux faits près que main doit retourner un int et un ; oublié, ce code est valide (pense néanmoins à libérer la mémoire avec delete, ou mieux, ne pas utiliser new).

    Quel est le vrai code qui plante ?
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  5. #5
    Membre éclairé Avatar de cs_ntd
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2006
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 598
    Par défaut
    Je vient de compiler ton code (avec Code::BLocks), je n'ai pas d'erreurs autres que :

    - "string", tu a bien fait tous les includes et toutes les définitions nécessaires ? (#include <string>, using..)
    - class Loader{...} ;
    - int main(){ ... return 0;}

    En faisant ces corrections, ça ne marche toujours pas ?

    Tu utilise quel IDE/Compilateur ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 49
    Par défaut
    j'utilise visual studio 2008, ce qu'il me manquait dans ce que tu as mis c'était le include <string> (mais ça compilait quand même bizarrement) mais j'ai toujours le même problème.

    Je n'ai pas mis tout le code car c'est un peu long. Et je suis d'accord pour dire que c'est bizarre...

  7. #7
    Membre éclairé Avatar de cs_ntd
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2006
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 598
    Par défaut
    Je viens de test avec VS2008, et bin ça marche

    Essaye peut-être de créer un nouveau projet, et test le code minimal. Si ça marche, essaye d'importer tes fichiers dans ton nouveau projet...
    Si ça ne marche pas après l'importation, c'est qu'il manque des choses dans ton code minimal...

Discussions similaires

  1. Impossible d'accéder à une variable
    Par 3Dgirl dans le forum Débuter
    Réponses: 5
    Dernier message: 20/05/2009, 14h16
  2. [PHP][SOAP] Impossible d'accéder à une méthode
    Par dms75 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 30/04/2009, 12h17
  3. [OpenOffice][Tableur] Impossible d'accéder à une image
    Par adaneels dans le forum OpenOffice & LibreOffice
    Réponses: 4
    Dernier message: 24/04/2009, 04h08
  4. Module de classe : impossible d'accéder à une propriété
    Par Mathusalem dans le forum Général VBA
    Réponses: 2
    Dernier message: 10/11/2008, 14h11

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