Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/10/2014, 05:42
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: Como eliminar una clase de una array dinamica

Código C++:
Ver original
  1. class Vector_A
  2. {
  3.       A** array;
  4.       int size;
  5.  
  6.   public:
  7.       Vector_A() { array = new A*; size = 0; }
  8.       int Size() { return size; }
  9.       void agregar(A *a)
  10.       {
  11.            size++;
  12.            array[size] = a;
  13.       }

En el constructor estás creando un arreglo a punteros pero no has definido un tamaño para ese arreglo luego, legalmente, solo te va a permitir agregar un puntero, puedes meter más pero no estarás pisando memoria que no le corresponde al arreglo y tendrás fallos inesperados.

El funcionamiento que se debería esperar es el siguiente (es un ejemplo, admite modificaciones ):

* Al construir la clase, dado que no tiene elementos, puedes dejar el "array" apuntando a null o crear el array con un tamaño predefinido por defecto.

* Al agregar un elemento tienes que comprobar si "array" admite más elementos o no. Si los admite, añades el nuevo puntero a la lista. Si no entran más elementos tienes que crear un nuevo "array" con más tamaño, copiar los elementos del array viejo al nuevo y borrar el viejo (como el array es de punteros éstos no se ven afectados). Hay que tener en cuenta que "array" puede apuntar a null.

Para poder comprobar si entran o no más elementos en "array" necesitas una nueva variable que te indique la capacidad máxima de "array" en todo momento.

No te he puesto código porque creo que es mejor que primero lo intentes por tu cuenta, pero si no te sale siempre puedes comentar el punto donde te has quedado atascado.

Un saludo.