Saltar al contenido

¿Cómo devolver un objeto de clase por referencia en C++?

Si hallas algún error con tu código o trabajo, recuerda probar siempre en un ambiente de testing antes subir el código al trabajo final.

Solución:

Probablemente esté devolviendo un objeto que está en la pila. Eso es, return_Object() probablemente se parece a esto:

Object& return_Object()

    Object object_to_return;
    // ... do stuff ...

    return object_to_return;

Si esto es lo que estás haciendo, no tienes suerte. object_to_return ha salido del alcance y ha sido destruido al final de return_Objectasi que myObject se refiere a un objeto inexistente. Debe devolver por valor o devolver un Object declarado en un ámbito más amplio o newed en el montón.

solo puedes usar

     Object& return_Object();

si el objeto devuelto tiene un alcance mayor que la función. Por ejemplo, puede usarlo si tiene una clase en la que está encapsulado. Si crea un objeto en su función, use punteros. Si desea modificar un objeto existente, páselo como argumento.

  class  MyClass
      private:
        Object myObj;

      public:
         Object& return_Object() 
            return myObj;
         

         Object* return_created_Object() 
            return new Object();
         

         bool modify_Object( Object& obj) 
            //  obj = myObj; return true; both possible
            return obj.modifySomething() == true;
         
   ;

Solo puede devolver objetos no locales por referencia. El destructor puede haber invalidado algún puntero interno, o lo que sea.

No tenga miedo de devolver valores: ¡es rápido!

Al final de todo puedes encontrar las notas de otros administradores, tú todavía eres capaz dejar el tuyo si te apetece.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *