Às vezes, quero delegar a construção de objetos que uma classe possui para uma função separada. Algo como
Vertex* new_vertex(const Options& options) {
// do stuff...
return new Vertex(...);
}
onde a função se destina apenas a ser usada dentro de uma classe que possui o Vertex. Claramente, essa função pode causar alguma confusão de vazamento de memória, por isso quero deixar o mais claro possível. Existe uma convenção de nomenclatura para essas funções?
unique_ptrchamada de sua release()função e usar os ponteiros brutos como nos velhos métodos.
// FIXME: Allocation of raw pointer?
new_vertexentão eu sei que o objeto foi cunhado recentemente. Você poderia chamá-lo Create_new_vertexpara ficar mais claro. Quanto à idéia de que você não deve gerenciar a memória heap sem ponteiros inteligentes, nunca viu a verdade nisso - na verdade, se você não pode gerenciar a memória heap sem eles, também não há negócios em gerenciar a memória heap com eles!

// TODO: Fix allocation of raw pointer.