Bonjour
Une question � propos de bonnes pratiques... m'est avis que je vais r�colter des deux avis. Voici le probl�me: j'utilise des smarts pointers dans un projet, ceux de boost. Or, il se trouve que je trouve chiant d'�crire � chaque fois:
Parce que je trouve �a long, d'une part, et parce que je veux me r�server la possibilit� (m�me si la probabilit� est tr�s faible) de ne pas �tre d�pendant de boost et de pouvoir changer de smart pointer un jour si je veux. Alors j'�cris dans mon header :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 boost::shared_ptr<MaClasse> variable etc bidule truc;
Et j'utilise MaClasse_var (par exemple) dans mon code. Comme je suis paresseux, ce qui est une qualit� pour nous autres, informaticiens, j'ai �crit la macro DeclarePointers(MaClasse) (le pr�nom a �t� chang�) qui d�finit les typedefs pr�c�dents.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4 typedef boost::scoped_ptr<MaClasse> MaClasse_local; typedef boost::shared_ptr<MaClasse> MaClasse_var; typedef boost::weak_ptr<MaClasse> MaClasse_wref;
Il existe une seconde solution: �crire une classe de traits, que j'utiliserais par exemple de la mani�re suivante:
Ce qui reste un peu plus chiant � �crire mais �conomise une macro et a le m�rite de ne compiler que les templates effectivement utilis�s dans le code.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4 SmartPrt<MaClasse>::local // code ... SmartPrt<MaClasse>::var // code ... SmartPrt<MaClasse>::wref // code ...
Selon vous, quel serait la meilleure solution ? Pourquoi ?
Partager