es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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

Tags:  ,

Answer

  1. Avatar for 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;
    }
    }
    }

Comments are closed.