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 :

héritage et méthode abstraite


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 98
    Par défaut héritage et méthode abstraite
    Ai-je le droit de faire ça? (changer le 'Image2D' par 'Image' dans la définition de la méthode)

    Image2D.hh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class Image2D {
       public:
          virtual Image2D* noirEtBlanc(std::string) = 0;
    };
    Image.hh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class Image : public Image2D, public Matrice<Pixel> {
       public:
          Image* noirEtBlanc(std::string);
    };

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Seulement si ton compilo supporte les retours covariants (Visual C++ 2005 le fait -- aucune idée pour les autres).

  3. #3
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    je crois que g++ aussi

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 98
    Par défaut
    J'ai utilisé l'exemple de la fac et mon compilateur supporte les retour covariants.
    le message "Derived::Test" s'affiche.
    merci.

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 98
    Par défaut
    une autre question: ça marche pareil quand on redefinit les operateurs?

    Image2D.hh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class Image2D {
       public:
          virtual Image2D* operator*(Image2D&) = 0;
    };
    Image.hh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class Image : public Image2D, public Matrice<Pixel> {
       public:
          Image* operator*(Image&);
    };

  6. #6
    Membre expérimenté
    Inscrit en
    Décembre 2003
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 272
    Par défaut
    Citation Envoyé par Laurent Gomila
    Seulement si ton compilo supporte les retours covariants (Visual C++ 2005 le fait -- aucune idée pour les autres).
    Ce n'est pas vraiment du retour covariant puisque c'est le type de l'objet auquel on applique la méthode "noirEtBlanc(...)" qui va décider de la fonction utilisée.

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Citation Envoyé par Ulmo
    Ce n'est pas vraiment du retour covariant puisque c'est le type de l'objet auquel on applique la méthode "noirEtBlanc(...)" qui va décider de la fonction utilisée.
    Et alors ce serait quoi un retour covariant pour toi, si ce n'est pas de pouvoir substituer le type de retour d'une fonction virtuelle par un type dérivé ?

  8. #8
    Membre expérimenté
    Inscrit en
    Décembre 2003
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 272
    Par défaut
    Je pensais à une surcharge sur le type de retour.
    J'aurais été surpris que le retour covariant ne soit pas possible. Je ne vois pas ce que cela pose comme problème, alors que je comprend bien celui posé par la surcharge sur le type de retour.

  9. #9
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    C'est pas moi qui l'ait inventé, si tu prenais la peine de regarder n'importe quel cours ou FAQ en ligne tu verrais que c'est bien ça la définition du retour covariant.

Discussions similaires

  1. Réponses: 8
    Dernier message: 27/01/2014, 10h36
  2. Méthode abstraite (virtuelle) et héritage
    Par wattman dans le forum Windev Mobile
    Réponses: 0
    Dernier message: 31/03/2009, 15h31
  3. Les méthodes abstraites et les interfaces
    Par ETI-trian dans le forum Langage
    Réponses: 3
    Dernier message: 17/01/2006, 12h14
  4. Réponses: 8
    Dernier message: 04/06/2004, 09h13
  5. [Héritage] Redéfinition méthode
    Par petit-ourson dans le forum Langage
    Réponses: 9
    Dernier message: 06/05/2004, 16h06

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