Salut,
voilà j'utilise une classe CLayer qui dérive de std::list<CLED*>, à savoir qu'à chaque ajout d'un élément CLED* dans ma liste, un nouveau CLED est instancié avec allocation dynamique de mémoire.
J'ai eu besoin d'un constructeur de copie pour ma classe CLayer capable de réallouer les zones mémoire de chacun des CLED* de ma liste.
Voici comment j'ai procédé :
Cette méthode fonctionne sans problème, mais je me posais tout de même une question : admettons que je souhaite faire de l'itération sur Source et boucler des this->push_back(...), à savoir que le compilateur n'autorise pas à faireCode:
1
2
3
4
5
6
7 CLayer::CLayer(const CLayer &Source) { *this = Source; CLayer::iterator tmpIt; for (tmpIt=begin(); tmpIt!=end(); tmpIt++) *tmpIt=new CLED(**tmpIt); }
(apparement parce que Source est const et tmpIt ne l'est pas...), comment aurais-je dû m'y prendre ?Code:tmpIt=Source.begin()
Merci de m'aider à satisfaire ma curiosité ;)
Rémy