elhor prática ao retornar ponteiros inteligentes
Qual é a melhor prática ao retornar um ponteiro inteligente, por exemplo, um boost :: shared_ptr? Por padrão, devo retornar o ponteiro inteligente ou o ponteiro bruto subjacente? Como sou do C #, costumo sempre retornar indicadores inteligentes, porque parece certo. Assim (ignorando a const-correção para código mais curto):
class X
{
public:
boost::shared_ptr<Y> getInternal() {return m_internal;}
private:
boost::shared_ptr<Y> m_internal;
}
No entanto, vi alguns codificadores experientes retornando o ponteiro bruto e colocando os ponteiros brutos em vetores. Qual é a maneira correta de fazer isso?