#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: