O boost :: ptr_vector deve ser usado no lugar std :: vector o tempo todo?
Apenas uma questão conceitual que eu tenho encontrado. No meu projeto atual parece que estou usando demais o impulsosmart_ptr
eptr_container
bibliotecas. Eu estava criandoboost::ptr_vectors
em muitos objetos diferentes e chamando o método transfer () para mover certos ponteiros de umboost::ptr_vector
para outro.
No meu entender, é importante mostrar claramente a propriedade dos objetos alocados no heap.
Minha pergunta é, seria desejável usar essas bibliotecas de impulso para criar membros alocados em heap que pertençam a um objeto, mas então usar ponteiros normais para esses membros viaget()
ao fazer qualquer processamento.
Por exemplo ... Um jogo pode ter uma coleção de Ladrilhos que pertencem a ele. Pode fazer sentido criar essas peças em umboost::ptr_vector
. Quando o jogo acabar, estes blocos devem ser automaticamente liberados.
No entanto, se eu quiser colocar esses Tiles em um objeto Bag temporariamente, devo criar outroboost::ptr_vector
no saco e transfira as peças do jogo para o saco viatransfer()
ou devo criar umstd::vector<Tile*>
onde os Tiles * fazem referência aos Ladrilhos no Jogo e passam isso para o Saco?
Obrigado.
** Editar Devo salientar que no meu exemplo O Jogo teria um objeto Bag como membro. O Bag só seria preenchido com o Tiles que o jogo possui. Então o saco não existiria sem o jogo.