Pouvez-vous être plus précis, SVP ?Expliquez-moi !
La fonction "Episode:: Print" est là pour afficher dans la console les informations contenus dans l'objet Episode.
Comme "Serie:: Print" ou Saison:: Print".
Dans ces fonctions, vous avez conçus toutes une collection de fonctions chargées d'afficher tel ou tel élément d'une série ou d'une saison :
Serie:: Print_Header();
Serie:: Print_Titre_Original(m_titres_originaux, affichage_titres_originaux_actif, keyColor, valuesColor);
Serie:: Print_Chaine();
Serie:: Print_Audiodescription(m_audiodescription, affichage_audiodescription_actif, keyColor[0], valuesColor);
Serie:: Print_Creee_par();
Serie:: Print_Genres(m_genre, affichage_genres_actif, m_sous_genre, affichage_sous_genre_actif, keyColor[0], valuesColor);
Serie:: Print_En_relation_avec();
Serie:: Print_Nationalites(m_nationalite, affichage_nationalite_actif, keyColor[0], valuesColor);
Serie:: Print_Images(m_image, affichage_image_actif, keyColor[0], valuesColor);
Serie:: Print_Resume
Saison:: Print_Note();
Saison:: Print_Chaine();
Saison:: Print_Netflix();
Saison:: Print_Images();
Saison:: Print_Avec();
Vous devriez faire la même chose pour les informations stockées dans un épisode comme :
son "numéro"
sa "durée"
son "résumé"
etc...
PrintData, c'est juste une fonction "factice" que vous devez remplacer par ce qui est nécessaire, comme les autres fonctions "Serie:: Print_xxx" ou "Saison:: Print_xxx" que vous avez réussit à concevoir sans mon aide.
(moi, j'aurais fait bien moins de fonction de ce type)
Si vous n'en créez aucune, l'affiche d'un épisode se résumerait à l'affichage des sessions de visionnage de cet épisode. Pas terrible.
Pour le plantage dont vous donnez la pile d'appel, le problème est un peu plus loin que dans "Episode:: Print()" dans le pile d'appel.
dans : "Saison:: Print()"
Votre code fait l'assertion qu'il n'y a pas de "trou" dans les numéros d'épisode et qu'il commence à l'épisode numéro "0".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 std::size_t taille; taille = std::size(m_liste_episodes); for (auto i = 0; i < taille; i++) { m_liste_episodes[i]->Print(); }
'm_liste_episodes[0]" n'existe pas, mais "std::map" essaye de vous aider en créant à la voler le "std::shared_ptr<Episode>" qui manque avec un pointeur "par défaut", qui n'est pas fonctionnel.
Vous plantez donc quand vous essayez d'accèder aux champs de l'épisode qui n'existe pas.
Ce n'est pas avec une boucle "for classique" que vous devez itérer sur une "std::map" mais avec une "range-based for loop" :
P.S.: rien ne s'affiche de plus car vous n'affichez rien dans les objets "Episode" et "Séquence de Visionnage".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for (auto episode : m_liste_episodes) { episode.second->Print(); }
Partager