Bonjour,
Je suis en pleine réflexion sur l'architecture de mon projet au boulot et j'ai besoin de gens qui ont du recul pour m'aider.
Par exemple, mes classes ont des membres pointeurs sur des classes (pas des pointeurs sur des types primitifs). Des pointeurs à l'ancienne hein, pas des smart, pas pour le moment.
Et du coup j'ai dû appliquer la Rule of Five : mettre un destructeur personnalisé et expliciter les constructeurs de copie, de move et les opérateurs correspondants.
Maintenant, j'aimerais juste interdire la copie. Mais en forçant le delete sur le constructeur de copie et l'opérateur, est ce que je peux garder les move constructor et le destructor ? Ça ne viole pas la règle ?
Ensuite, je me demande comment faire un setter d'un membre "pointeur" proprement. Oui je sais, c'est le mal les getters et setters mais admettons que je veuille le faire, comment m'y prendre ? Est ce que je fais juste ça :
Ou un truc plus compliqué ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void setToto(const int &toto) { *m_toto = toto; }
Et enfin, j'ai cru lire que remplir un vecteur de pointeurs c'était plutôt dangereux avec des push_back de new car on risque de perdre le contenu si l'allocation échoue. Quelle est alors la meilleure alternative ?
Merci à vous si vous prenez le temps de répondre à mes questions.
Partager