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 :

A propos des classes abstraites


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3
    Par défaut A propos des classes abstraites
    Bonjour à tous,

    Les données de mon dilemme sont les suivantes :
    Deux classes A et B dérivants d'une classe abstraite base. Dans cette dernière get_int() est virtuelle pure. Elle est redéfinie dans A et B.
    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
     
    // Classe de base abstraite
    class base {
    ...
    virtual int get_int() const = 0;
    ....
    };
    // Première classe dérivée de base
    class A : public base{
    ....
    int get_int() const
    {.....}
    ...
    };
     
    // Seconde classe dérivée de base
    class B: public base{
    ....
    int get_int() const
    {.....}
    ...
    };
    Une quatrième classe use contenant la méthode method qui a un argument de type ref A :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class use {
     
    public:
    ...
    int method(const A & ref_A){
    ...
    const int my_int = ref_A.get_int();
    ....
    }
    };
    Le main ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    int main(int argc,char * argv[]){
     
    // Un objet de type A
    A objet_A;
     
    // Un objet de type use
    use objet_use;
     
    // A ce niveau je reçoi une erreur de segmentation
    objet_use.method(objet_A);
    ...
     
    }
    Je n'arrive pas à expliquer le fait que je reçoive une erreur de segmentation. Sachant que, je ne reçoi pas une telle erreur si je ne déclare pas get_int() comme virtuelle pure dans la classe de base base.

    Quelqu'un voit t-il pourquoi ?

    Merci d'avance.

    Compilateur : g++ 3.3.5 (debian 1:3.3.5-13)

    N.B.: Si vous pensez que les données ne sont pas suffisantes ou pas claires, merci de me le signaler, je donnerai plus de détails.
    [pense à mettre la balise de code, Merci Farscape]
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Oups, j'avais dis une bêtise

    Dans method(const A & ref_A), tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const int my_int = A.get_int();
    au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const int my_int = ref_A.get_int();

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3
    Par défaut A propos des classes abstraites
    Bonjour à tous,

    Merci à toi Eusebe.

    En effet, j'avais moi-même utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const int my_int = ref_A.get_int();
    Au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const int my_int = A.get_int();
    Désolé pour cette erreur dans l'énoncé

    Donc, la question reste posée, comment expliquer l'erreur de segmentation que j'ai mentionné dans le premier message.

    Merci d'avance.

    N.B.: Tout commentaire sur la présentation est le bienvenue.

  4. #4
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Je n'arrive pas à reproduire ton problème...

    Est-ce que tu peux nous donner un code 'minimal' qui compile et qui reproduise l'erreur ?

  5. #5
    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
    Donc, la question reste posée, comment expliquer l'erreur de segmentation que j'ai mentionné dans le premier message.
    Avec un petit coup de gdb peut-être ?

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3
    Par défaut A propos des classes abstraites
    Bonjour Eusebe,

    Le problème était ailleurs.

    T'avais bien fait de me demander un code minimal, car c'est en relisant mon code pour en extraire une formulation minimale du problème que j'ai pu localisé le vilain petit cafard. Un pointeur laissé à l'abondon !

    Le problème n'a rien avoir avec les classes abstraites

    Merci beaucoup et au prochain dilemme.

    A bientôt.

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

Discussions similaires

  1. A propos des classes abstraites
    Par zied_m dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 04/01/2012, 23h20
  2. boost.python : générer les conversions to_python pour des classes abstraites
    Par Blustuff dans le forum Interfaçage autre langage
    Réponses: 2
    Dernier message: 02/08/2011, 11h08
  3. L'intérêt des classes abstraites face au interfaces
    Par diopahmadou dans le forum Langage
    Réponses: 2
    Dernier message: 07/12/2009, 10h43
  4. [classe abstraite] gestion des classes abstraites en memoire
    Par noOneIsInnocent dans le forum Langage
    Réponses: 2
    Dernier message: 10/12/2007, 11h53
  5. À propos des classes partielles
    Par zarbiman dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 01/03/2007, 11h21

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