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 :

Fontion virtuelle avec en argument une classe dérivée:


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Fontion virtuelle avec en argument une classe dérivée:
    Bonjour,

    J'ai un soucis avec une fonction virtuelle :

    Je donne un exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class A 
    {
    public:
    virtual double MaFontion( A * );
    };
     
    class B : public A
    {
    public:
    double MaFonction ( B * );
    };
    Visiblement, le compilateur n'arrive pas à faire le lien entre mes deux fonctions... (erreur du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error LNK2001: unresolved external symbol  "MaFonction"
    Y'a t'il un truc que j'ai pas compris. Ou, est ce que ce que j'essaye de faire est impossible et dans ce cas, comment je dois fair...

    merci d'avance pour votre aide !!!

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 17
    Points : 20
    Points
    20
    Par défaut
    Salut Sam,

    En fait tu déclares une fonction MaFonction virtuelle dans A mais cette dernière n'est jamais redéfinie dans B car les 2 MaFonction n'utilisent pas le même paramètre.

    Stef

  3. #3
    jmv
    jmv est déconnecté
    Membre confirmé Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Points : 603
    Points
    603
    Par défaut
    sachant qu'un A* peut pointer sur un B (c'est le polymorphisme) essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class A 
    { 
      public: 
        virtual double MaFontion( A * ); 
    }; 
     
    class B : public A 
    { 
      public: 
        double MaFonction ( A * ); 
    };

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Avec ce que m'a conseillé jmv, j'arrive en effet, a ne plus avoir ce problème de link.
    Mais j'ai été obligé d'utiliser un dans la définition de ma fonction car je devait avoir accès à des données de B et donc accessible seulement quand l'objet est défini comme une instance de B.

    Est ce que ca risque de pauser problème?
    Merci

  5. #5
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Oui. Rien ne te garantit que tu recoives bien un B en paramètre...
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

Discussions similaires

  1. Erreur du designer avec héritage d'une classe abstraite
    Par Xzander dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/04/2007, 00h36
  2. Réponses: 4
    Dernier message: 17/03/2007, 01h06
  3. problème d'accès dans une classe dérivée!
    Par chrono23 dans le forum C++
    Réponses: 47
    Dernier message: 10/10/2006, 11h22
  4. Réponses: 2
    Dernier message: 06/12/2005, 09h41
  5. Déterminer le type d'une class dérivée
    Par LDDL dans le forum MFC
    Réponses: 3
    Dernier message: 10/12/2004, 17h36

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