¿Se puede impulsar :: smart_ptr como scoped_ptr y shared_ptr en contenedores estándar como std :: map?¿Se puede impulsar :: smart_ptr en contenedores estándar?
class SomeClass
{
std::map<int,boost::scoped_ptr<SomeOtherClass> > a_map;
};
Como boost::smart_ptr can be used for polymorphism, ¿es cierto que en este caso así? ¿La destrucción del contenedor provocará la destrucción correcta de las subclases?
lo mismo que antes: ¿lo has probado? – BatchyX
@BatchyX - no. Es bastante refactorización en mi caso, así que más bien pregunto. Además, si la respuesta no está en StackOverflow, debería ser :) – Jonathan
Estado allí, hecho eso. Pero he aprendido de ello, en la mayoría de los casos puede escribir 20-30 programas de prueba de línea que verificará/invalidarán una idea en menos de 5 minutos. 'struct test {~ test() {std :: cout <<" ~ test "<< std :: endl; }}; int main() {vector> v; v.push_back (make_shared ()); } '(o algo en esta línea, es difícil de escribir el código en un comentario). Luego compile y verifique si se llaman o no los destructores. Inténtalo de nuevo con 'scoped_ptr' y verifica si el código incluso se compila. Agregue un par de otras operaciones ('resize', ...) y verifique. –