Hola,tengo problemas con un ejercicio que consiste en que tengo una lista formada por un contador(int) y un array (que dentro tiene estructuras)de cantidad N en principio.
Cuando el array se llene,tengo que crear un array dinámico nuevo con la capacidad N aumentada (en mi ejercicio he llamado max a esta variable).
Una vez he creado este array dinámico,copio los elementos del array viejo en este array nuevo y elimino el array viejo.
Finalmente,tengo que hacer que la lista apunte a este nuevo array dinámico.
Código C++:
Ver original//Declaración de tipos:
typedef struct {
int codigo;
std::string nombre;
double valor;
} tRegistro;
typedef tRegistro *tRegPtr;
typedef struct {
tRegPtr registros;
int cont;
} tLista;
//Función en la que tengo los errores:
bool insertar(tLista &lista, tRegistro registro, int &max) {
bool aniadido = false;
max = N;
if (lista.cont == max) {//Si la lista está llena,se incrementará el tamaño del array en otras N posiciones.
max += N;
//Creo un nuevo array dinámico con la nueva cantidad de max.
tRegPtr *registrosAux = new tRegPtr[max];
//Copio los elementos del array anterior al nuevo array dinámico.
for(int i = 0; i < lista.cont; i++){
registrosAux[i] = lista.registros[i];//AQUÍ ERROR 1
}
//Destruimos el array viejo de la lista porque ya se llenó.
delete [] lista.registros;
//Hacer que el puntero lista.registros apunte al nuevo array.
lista.registros = registrosAux;//AQUÍ ERROR 2
}
//Siempre añade un nuevo elemento solo que comprueba si tiene la lista llena antes para ver si incrementa o no esta cantidad.
lista.registros[lista.cont] = registro;
lista.cont++;
aniadido = true;
return aniadido;
}
Tengo dos errores y en ambos me dice que pertenecen a error C2440: '='
ERROR 1: no se puede realizar la conversión de 'tRegistro' a 'tRegPtr'
ERROR 2:no se puede realizar la conversión de 'tRegPtr *' a 'tRegPtr'
PD:Si ya de paso me pueden explicar o dar algún tip para entender bien esto de los punteros,me ayudaría muchísimo porque no termino de entenderlo :(