Un objeto con un puntero a otro objeto

Añadamos a la clase Caja como atributo privado un puntero a otro objeto de la misma clase:

                              
#include <iostream.h>

class Caja {
    double longitud, anchura, altura;
    Caja *otraCaja;
public:
   Caja(double dim1, double dim2, double dim3);             //Constructor
   double volumen(void);
   void point_at_next(Caja *where_to_point);
   Caja *get_next(void);
};


Caja::Caja(double dim1, double dim2, double dim3)        //Constructor implementation
{
   longitud = dim1;
   anchura = dim2;
   altura = dim3;
   otraCaja = NULL;
}



double Caja::volumen(void)
{
   return (longitud * anchura * altura);
}


// This method causes the pointer to point to the input parameter
void Caja::point_at_next(Caja *where_to_point)
{
   otraCaja = where_to_point;
}


// This method returns the box the current one points to
Caja *Caja::get_next(void)
{
   return otraCaja;
}


main()
{
Caja peque&ntidle;a(5, 4, 10), mediana (10, 6, 20), grande(20, 10, 30);
         
Caja *CajaPointer;                      
   
   cout << "El volumen de la Caja pequeña es " << pequeña.volumen() << "\n";
   cout << "El volumen de la Caja mediana es " << mediana.volumen() << "\n";
   cout << "El volumen de la Caja grande es" << grande.volumen() << "\n";

   pequeña.point_at_next(&mediana);
   mediana.point_at_next(&grande);

   CajaPointer = &pequeña;
   CajaPointer = CajaPointer->get_next();
   cout << "La Caja apuntada tiene volumen = " <<
                                  CajaPointer->volumen() << "\n";
}

El resultado de la ejecución será :

El volumen de la Caja pequeña es 200
El volumen de la Caja mediana es 1200
El volumen de la Caja grande es 6000
La Caja apuntada tiene volumen = 1200

En este programa:

Free Web Hosting