Estoy empezando con C++ y el ejercicio que tengo que hacer me dice que a través de un menú debe hacer que un usuario pueda agregar personas, eliminarlas o mostrar todas las que tiene el programa en memoria.
La cosa está en que lo tengo que hacer con vectores, pero los vectores tienen una longitud predeterminada y no puede alterarse. Es por esto que tengo Persona personas[total];, en donde total es una variable global creada previamente y Persona una estructura.
Una de las funciones que estoy obligado a utilizar me dice que hay que desplazar los elementos del vector desde una posición X hacia la derecha. Bueno lo que tengo es esto:
Código C++:
Ver original
Persona *moverDcha(Persona personas[], int pos) { Persona *p = new Persona[total + 1]; for (int i = 0; i < total + 1; i++) { if (i < pos) { p[i] = personas[i]; } else if (i > pos) { p[i] = personas[i - 1]; } } return p; }
Con la idea de crear un nuevo vector de Persona con la dimensión correcta. Cuando hago:
Código C++:
Ver original
personas = moverDcha(personas, pos);
El compilador se vuelve loco a tirarme errores, pero no entiendo que pasa.
Código C++:
Ver original
main.cpp:58:30: error: incompatible types in assignment of ‘Persona*’ to ‘Persona [(((sizetype)(((ssizetype)total) + -1)) + 1)]’
Se supone que un vector es un puntero a la primera posición de un conjunto de espacios de memoria contiguos. Me puede explicar alguien el error y cómo debo hacerlo bien. Gracias.