Bonjour,
J'ai fait un code ultra simple sous code::blocks : 1 template, 1 classe héritant d'une specification du template, 1 classe héritant de cette dernière ; le tout, sans aucun pointeur.
J'ai tourné le pb sous pas mal d'angle mais en vain.
ça compile mais à l'affichage, pb, c'est pas ce à quoi je m'attendais : j'ai une adresse et pas un contenu! Pourtant, je suis certain de demander un contenu...
Les questions que je me pose actuellement pour résoudre le problème :
_est-ce que l'héritage d'un template spécifié peut causer des soucis?
_est que le static_cast est bien suffisant pour passer d'une dérivée à sa base (comme dans la FAQ)?
_est-ce que les opérateurs par défaut sont bien là?
Je met en pj les sources et ci dessous, ce qui me fait l'affichage :
Affichage.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #ifndef AFFICH_H #define AFFICH_H #include <fstream> #include "Bornes.h" #include "Spec_servo.h" #include "Servo.h" std::ostream& Print(std::ostream& stream, Spec_servo& b); std::ostream& Print(std::ostream& stream, Servo& b); #endif
Affichage.cpp :
RQ : le static_cast direct compile, pas celui à * comme dans la FAQ... j'ai donc un soucis et je suis aveugle depuis 8H!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include "Affichage.h" std::ostream& Print(std::ostream& stream, Spec_servo& b) { return stream<<"Spec_servo : "<<b.r_min()<<" ; "<<b.r_max(); } std::ostream& Print(std::ostream& stream, Servo& b) { //Spec_servo *spe=static_cast<Spec_servo*>(b); Spec_servo spe=static_cast<Spec_servo>(b); return stream<<"Servo : "<<Print(stream,spe)<<b.r_Pulse(); }
Merci d'avance si vous détecter qq chose de bizarre.
Partager