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

Langage C++ Discussion :

Problème fonction virtuelle pure


Sujet :

Langage C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 58
    Par défaut Problème fonction virtuelle pure
    Bonjour,

    j'ai un problème je ne vois pas du tout d’où celui-ci peux venir, j'ai une classe B comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class B{
        protected:
           int val;
        public:
          virtual void mafonction(std::string)=0;
    };
    et ma classe A :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class A: public B{
        public:
          virtual void mafonction(std::string);
    };
    mais lorsque j’appelle mafonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    A a;
    a.mafonction("test");
    J'obtiens le message d'erreur suivant :
    Violation d'accès lors de la lecture de l'emplacement 0x00000004.

    Et j'obtiens pour toutes les fonctions virtuelles un message d'erreur et à chaque fois que je met le mot clé virtual j'obtiens un message d'erreur.

    PS: je code sous visual studio 2010 et avec directx.

    Merci de votre aide!

  2. #2
    Membre Expert Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Par défaut
    Je pense pas que ça ait quelque chose à voir avec le fait que ça soit une classe virtuelle. Je pense plutôt que tu essayes de faire dans une de tes méthodes. Initialises-tu val à 4 quelque part ?

    A part ça pense bien à déclarer ton destructeur virtuel et sinon c'est plus propre de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class A: virtual public B
    A part ça, je vois pas trop l'erreur...

  3. #3
    Membre éprouvé Avatar de Xtrem_Voyageur
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2009
    Messages : 85
    Par défaut
    Peux tu poster l'intégralité du code.

    P.S. : inutile de répéter le mot clef virtual quand tu redéfinis une méthode.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 58
    Par défaut
    Problème corrigé j'avais cru déclarer un pointeur de A mais en fait non j'avais mal vu mon code...

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

Discussions similaires

  1. fonction virtuel pure et constante
    Par ZaaN dans le forum C++
    Réponses: 5
    Dernier message: 03/08/2007, 15h27
  2. Réponses: 16
    Dernier message: 21/05/2007, 01h04
  3. Réponses: 2
    Dernier message: 30/01/2007, 11h44
  4. Réponses: 2
    Dernier message: 05/03/2006, 19h29
  5. Compilation avec des fonctions virtuel pure
    Par vanitom dans le forum C++
    Réponses: 4
    Dernier message: 16/12/2005, 14h37

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