Quelle est la meilleure pratique pour retourner un pointeur intelligent, par exemple un boost::shared_ptr ? Dois-je retourner le pointeur intelligent ou le pointeur brut sous-jacent ? Je viens du C# et j'ai donc tendance à toujours retourner les pointeurs intelligents, parce que cela me semble correct. Comme ceci (en sautant la const-correctness pour un code plus court) :
class X
{
public:
boost::shared_ptr<Y> getInternal() {return m_internal;}
private:
boost::shared_ptr<Y> m_internal;
}
Cependant, j'ai vu certains codeurs expérimentés renvoyer le pointeur brut, et mettre les pointeurs bruts dans des vecteurs. Quelle est la bonne façon de procéder ?