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++:
Tengo dos errores y en ambos me dice que pertenecen a error C2440: '='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; }
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 :(