Gracias por contestar!
Empece desde 0 asi que cambie los nombres de clases y funciones. Ya me funciono agregandole al constructor:
Código:
Vector_Digit() { array = new Digit*[5]; array_size = 5; size = 0; }
Y probe a agregar mas elementos de lo asignado y me dio problemas como dijiste, trate de agrandar el array pero no pude :S aqui te dejo lo que intente hacer:
Código:
//* Problema al crear la nueva array.
if (size + 1 > array_size)
{
int new_array_size = (array_size / 5) * 5 + 5; // El tamaño va a ir aumentando 5 en 5.
Digit** new_array = new Digit*[size]; // Array momentaneo.
// Copiar los elementos del viejo array al array momentaneo.
for(int i = 0; i < size; i++)
{
new_array[i] = array[i];
}
delete[] array; // Eliminar el antiguo array.
Digit** array = new Digit*[new_array_size]; // Recrear el viejo array con nuevo tamaño.
// Copiar los elementos del array momentaneo al array recreado.
for(int i = 0; i < size; i++)
{
array[i] = new_array[i];
}
delete[] new_array; // Eliminar array momentaneo.
array_size = new_array_size;
}
//*/
y te dejo todo el nuevo codigo:
Código:
#include <iostream>
using namespace std;
class Digit
{
int number;
public:
void set(int new_number)
{
number = new_number;
}
int get()
{
return number;
}
};
class Vector_Digit
{
Digit** array;
int array_size;
int size;
public:
Vector_Digit() { array = new Digit*[5]; array_size = 5; size = 0; }
int Size() { return size; }
void push_back(Digit *digit)
{
//* Problema al crear la nueva array.
if (size + 1 > array_size)
{
int new_array_size = (array_size / 5) * 5 + 5; // El tamaño va a ir aumentando 5 en 5.
Digit** new_array = new Digit*[size]; // Array momentaneo.
// Copiar los elementos del viejo array al array momentaneo.
for(int i = 0; i < size; i++)
{
new_array[i] = array[i];
}
delete[] array; // Eliminar el antiguo array.
Digit** array = new Digit*[new_array_size]; // Recrear el viejo array con nuevo tamaño.
// Copiar los elementos del array momentaneo al array recreado.
for(int i = 0; i < size; i++)
{
array[i] = new_array[i];
}
delete[] new_array; // Eliminar array momentaneo.
array_size = new_array_size;
}
//*/
array[size] = digit;
size++;
}
void eliminate(int index)
{
if (index > -1 && index < size)
{
for(int i = index; i < size; i++)
{
if (i + 1 < size) { array[i] = array[i + 1]; }
}
size--;
}
}
Digit* get(int index)
{
return array[index];
}
void free() { delete[] array; }
};
void ver(Vector_Digit *vector)
{
for(int i = 0; i < vector->Size(); i++)
{
cout << i << ": " << vector->get(i)->get() << endl;
}
}
void asignar(Vector_Digit *vector)
{
for(int i = 0; i < vector->Size(); i++)
{
vector->get(i)->set(i * 5);
}
}
int main(int argc, char *argv[])
{
Vector_Digit vector;
Digit digit1, digit2, digit3, digit4, digit5, digit6, digit7, digit8, digit9, digit10;
vector.push_back(&digit1);
vector.push_back(&digit2);
vector.push_back(&digit3);
vector.push_back(&digit4);
vector.push_back(&digit5);
//* Problemas al agregar.
vector.push_back(&digit6);
vector.push_back(&digit7);
vector.push_back(&digit8);
vector.push_back(&digit9);
vector.push_back(&digit10);
//*/
asignar(&vector);
ver(&vector);
vector.eliminate(3);
ver(&vector);
system("PAUSE");
vector.free();
return EXIT_SUCCESS;
}
Gracias por la atencion!