Tout dépend si CastellumLayer deviens propriétaire de l'objet ou non (autrement dit, si il deviens responsable de la destruction du CastellumBox)`.
Si avant l'appel, le CastellumBox appartient à l'appelant et qu'après l'appel il n'appartient plus à l'appelant, alors il faut utiliser ni pointeurs nus ni références, mais des pointeurs intelligents comme std::unique_ptr (ou std::auto_ptr en C++03). Parce que tel que le code est écrit, si push_back balance une exception (genre std::bad_alloc), alors tu peut potentiellement laisser fuiter un castellumBox.
Si CastellumLayer ne deviens jamais propriétaire de l'objet, et que la durée de vie de CastellumBox est correctement gérée (aucun pointeur traîne vers l'objet lors de sa destruction, y compris dans un CastellumLayer::_bricks), alors je dirait qu'il faudrai mieux prendre un pointeur nu, mais ça peut se discuter.
Si CastellumLayer à toujours été propriétaire de l'objet, et que l'appelant à récupéré le CastellumBox depuis CastellumLayer, alors y a peut-être des choses à améliorer dans l'API.
[^] # Re: Très rapide review
Posté par Batchyx . En réponse au journal Petit Framework de jeu 2d en C++. Évalué à 2.
Tout dépend si
CastellumLayerdeviens propriétaire de l'objet ou non (autrement dit, si il deviens responsable de la destruction duCastellumBox)`.Si avant l'appel, le
CastellumBoxappartient à l'appelant et qu'après l'appel il n'appartient plus à l'appelant, alors il faut utiliser ni pointeurs nus ni références, mais des pointeurs intelligents commestd::unique_ptr(oustd::auto_ptren C++03). Parce que tel que le code est écrit, sipush_backbalance une exception (genre std::bad_alloc), alors tu peut potentiellement laisser fuiter uncastellumBox.Si
CastellumLayerne deviens jamais propriétaire de l'objet, et que la durée de vie deCastellumBoxest correctement gérée (aucun pointeur traîne vers l'objet lors de sa destruction, y compris dans unCastellumLayer::_bricks), alors je dirait qu'il faudrai mieux prendre un pointeur nu, mais ça peut se discuter.Si
CastellumLayerà toujours été propriétaire de l'objet, et que l'appelant à récupéré leCastellumBoxdepuisCastellumLayer, alors y a peut-être des choses à améliorer dans l'API.