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.
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
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 {.....} ... };
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 class use { public: ... int method(const A & ref_A){ ... const int my_int = ref_A.get_int(); .... } };
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.
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); ... }
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]
Partager