Bonjour,
Je cherche à faire une programme plus général que ces quelques lignes mais je pense déjà avoir mal compris le fonctionnement de la commande static_cast<>.
En effet, dans mon programme, j'ai une liste d'éléments d'une classe parent que je souhaite caster en des éléments d'une classe fille (tous les éléments de la liste parente doivent le permettre). Dans l'exemple simple suivant, je pensais pouvoir retrouver le résultat attendu, cad les mêmes informations que celles initialement connues :
Code :
- #include <iostream>
- #include <string>
- using namespace std;
- class Article
- {
- public:
- int prix;
- };
- class Livre : public Article
- {
- public:
- string auteur;
- };
- void main()
- {
- // Creation de monlivre
- Livre monlivre;
- monlivre.prix = 20;
- monlivre.auteur = "Kant";
- cout << monlivre.prix << endl;
- cout << monlivre.auteur << endl;
- // Creation de monarticle
- Article monarticle = monlivre;
- Livre* ptlivre = static_cast<Livre*> (&monarticle);
- cout << ptlivre->prix << endl;
- cout << ptlivre->auteur << endl;
- }
|
Malheureusement, mon programme peut être compilée mais à l'exécution, la dernière commande, sur l'affichage de l'auteur bloque et produit un arret de l'éxecution.
Quelqu'un pourrait-il m'indiquer d'où vient ce comportement et s'il était attendu ? Je souhaiterais pourtant qu'il puisse s'éxécuter car, dans mon projet de programmation, j'aurais sans doute des opérations comparables à éxécuter.
D'avance merci pour votre aide