Pas de panique.
Tous vos erreurs sont liées à peu de problème.
Episode(InfosVisionnage const& info_vis) :m_saison{ info_vis.m_saison } {};
C'est parce que j'ai nommé le champ contenant la saison dans la classe "InfosVisionnage" "m_saison" et non "saison".
Cela permet d'avoir un code bien plus clair. Vous allez voir après.
Donc, dans serie.h :
Remplacez :
par
Ensuite, il faut changé le constructeur pour qu'il initialise correctement ce champ "référence constante" nommé "m_saison" :
Donc, dans serie.cpp :
Remplacez :
InfosVisionnage::InfosVisionnage(const Saison& saison, fs::path const& m_cheminFichier)
par
InfosVisionnage::InfosVisionnage(const Saison& saison, fs::path const& m_cheminFichier) : m_saison{saison}
Avec ce petit ajout, le compilateur peut maintenant générer un constructeur qui initialise correctement le champ m_saison de la classe InfosVisionnage.
Bin, faut juste le bon nom pour le champ qu'on veut utiliser et quand on veut initialiser un champ "référence constante", il n'y a pas 36 manières de faire, c'est via une "liste d'initialisation" (le truc entre les ":" et l'accolade "{").
Il faut encore quelques modifications pour que votre code compile (mais ne fonctionnera pas très bien, mais sera bien plus simple à corriger qu'avec vos anciens codes).
donc remplacez dans serie.cpp :
m_liste_sequence_visionnages.push_back(info_vis);
par :
m_liste_sequence_visionnages.push_back(SequenceVisionnage{ info_vis });
C'est juste que m_liste_sequence_visionnages, c'est une liste de SequenceVisionnage et pas une liste de InfosVisionnage.
On utilise le constructeur de SequenceVisionnage qui prend en paramètre une InfosVisionnage.
Je pense qu'il faudra corriger/implémenter ce constructeur.
Mais ce code qui l'utilise n'aura pas à être modifié après.
remplacez (toujours dans serie.cpp) :
taille = std::size(infosvisionnages);
par :
taille = std::size(m_liste_episodes);
Je ne comprends pas trop la logique de votre code, c'est quoi ce "infosvisionnages" qui sort de nullpart ?
remplacez (toujours dans serie.cpp) :
infosvisionnages[i].Print();
par :
m_liste_episodes[i]->Print();
Toujours pareil, aucune logique avec infosvisionnages.
On cherche à afficher chaque épisode, non ?
Donc appeler la fonction "Print" de chaque épisode, non ?
Voilà, ça compile.
Faudra maintenant corriger le code, qui sera bien plus simple, vous verrez.
Partager