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 :

Référence d'une classe virtuelle pure


Sujet :

Langage C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 22
    Points : 19
    Points
    19
    Par défaut Référence d'une classe virtuelle pure
    Bonjour,

    Est-il possible de créé une référence d'une classe virtuelle pure ?

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class A{
        virtual void func1()=0;
    };
     
    class B{
        void funct2(A &);
    };
    merci

  2. #2
    Membre chevronné Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Points : 2 160
    Points
    2 160
    Par défaut
    Bonjour

    As-tu testé ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Oui j'ai testé

    Voila le code :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    #include <iostream>
     
    using namespace std;
     
    class A{
    public :
        virtual void func1()=0;
    };
     
    class A1: public A{
    public :
        virtual void func1(){
            cout << "A1" << endl;
        }
    };
     
    class B{
    public:
        void func2(A & ref){
            A.func1();
        }
    };
     
    int main(int argc, char** argv) {
        A1 bob1;
     
        B bob2;
     
        bob2.func2(A1);
     
        return 0;
    }
    Et voilà ce que me renvoi le compilateur:

    g++ -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/src/main.o.d -o build/Debug/GNU-Linux-x86/src/main.o src/main.cpp
    src/main.cpp: In member function ‘void B::funct2(A&)’:
    src/main.cpp:20:10: erreur: expected unqualified-id before ‘.’ token
    src/main.cpp: In function ‘int main(int, char**)’:
    src/main.cpp:29:19: erreur: expected primary-expression before ‘)’ token

  4. #4
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 629
    Points : 30 692
    Points
    30 692
    Par défaut
    Salut,

    Et... en transmettant le paramètre (ref) recu plutôt qu'en essayant d'utiliser le type (A), qu'est ce que ca donne

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Désoler koala01, je n'ai pas compris ta réponse, peux-tu reformuler, merci.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    Ce que koala veut t'expliquer c'est que c'est un problème de syntaxe basique:
    A est le nom du type, mais pour appeler une fonction c'est le nom de la référence (ref, donc) qu'iol faut utiliser.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    A.func(); // noooon! -->
    ref.func(); // ahh, much better!(c)

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Ahhhh !!

    merci !

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

Discussions similaires

  1. Construction d'un objet dans une classe virtuelle pure
    Par thor55 dans le forum Débuter
    Réponses: 3
    Dernier message: 06/07/2014, 10h57
  2. Réponses: 13
    Dernier message: 10/01/2013, 15h19
  3. Réponses: 5
    Dernier message: 14/10/2012, 19h25
  4. Réponses: 15
    Dernier message: 08/07/2012, 23h49
  5. Réponses: 8
    Dernier message: 16/10/2006, 12h28

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