Tengo un std::queue
que se ajusta como una clase de plantilla para hacer una cola segura para subprocesos. Tengo dos versiones de esta clase: una que almacena tipos de valores, una que almacena tipos de punteros.C++ std :: queue :: pop() llama a destructor. ¿Qué hay de los tipos de punteros?
Para el tipo de puntero, tengo problemas para eliminar los elementos de la cola en la destrucción. La razón es que no sé cómo eliminar los elementos de la cola de forma segura.
This estados de referencia (de forma vaga, así que supongo que en realidad NO LO DECLARAN) que la única manera de eliminar elementos de la cola es llamar al pop()
. La referencia también dice que pop()
llama al destructor para el artículo.
Bueno, esto causa problemas con mis tipos de punteros porque pueden o no señalar agregados. Si uno de ellos apunta a un agregado, todos lo harán, pero debido a que el contenedor está modelado, no hay garantía de qué tipo (agregado o no agregado) estamos tratando.
Entonces, cuando pop()
llama al destructor, ¿qué ocurre? ¿Cómo me aseguro de que todo se elimine y la asignación de memoria sea correcta?
Por último, mi solución está utilizando una versión anterior de GCC para ARM9. No tengo control sobre esto. Entiendo que hay bibliotecas que tienen punteros inteligentes y contenedores que ayudarían aquí, pero están fuera de mi alcance.
"Bueno, esto causa problemas con mis tipos de punteros porque pueden o no señalar agregados" No entiendo qué agregados tienen que ver con nada aquí. –