¿Asignar un puntero a otro puntero localmente dentro de una función en C++ es un comportamiento indefinido?
Mi pregunta está relacionada con la asignación de punteros a otro puntero. En el código a continuación, en el método next_schedulable_operation()
, la variable miembro candidates_
tiene elementos de tipo mlir::Operation*
. Tengo un iterador op_itr
a uno de los elementos en candidates_
. Antes de borrar los elementos de candidates_
, hago una copia local del puntero con la línea de código mlir::Operation* op = *op_itr;
.
Luego, en la última línea, asigno la variable local a la variable miembro schedulable_op_
con la línea schedulable_op_ = op
;
¿Esto resultará en un comportamiento indefinido? No puedo trabajar con el objeto mlir::Operation
ya que dice que el destructor es privado.
error: ‘mlir::Operation::~Operation()’ es privado dentro de este contexto
Código
davy.ai
void next_schedulable_operation() {
// Iterar sobre los candidatos y encontrar la siguiente operación planificable.
for (auto op_itr = candidates_.begin(), e = candidates_.end(); op_itr != e; ++op_itr) {
// Hacer una copia local del puntero.
mlir::Operation* op = *op_itr;
// Comprobar si la operación es planificable.
if (is_schedulable(op)) {
// Eliminar el elemento de la lista de candidatos.
candidates_.erase(op_itr);
// Asignar la variable local a la variable miembro.
schedulable_op_ = op;
return;
}
}
}