last day (15 days later) » 

02:21
0
Q: ¿Cómo definir el tamaño de un struct mediante entrada por teclado en c++?

Sercroft1Estoy desarrollando un programa donde se requiere que el struct tenga n tamaño. Estoy un poco confundido sobre cómo asignarle el tamaño al struct mediante entrada por teclado. Gracias. cout<<"Digite la opción: "; cin>>op; if(op==1) { system("cls"); int n; cout<<

Ya coloqué el código.
¿Te refieres a un vector<T>?
Sí, el que le dal el tamaño al struct. Ese es el que necesito definir por medio de entrada por teclado. struct hola{...}h[...];
PD: Para evitar que los case de un switch colapsen necesitas agregar le statement break después de cada case
Los tenía, pero daba igualmente el error... La verdad me dejó patidifuso.
[Error] jump to case label [-fpermissive] - [Error] crosses initialization of 'prueba* p'
02:21
Entiendo que este método está en algún tipo de loop donde quieres que la operación anterior quede almacenada. Es decir, en la primera iteración se inicializa el struct de objetos con la operación 1 y en el siguiente, si se accede a la operación 3, el struct ya está inicializado (?.
¡Hola!
El struct lo inicialice al inicio del programa, antes del int main(). Ya en la operación 1 lo que hago es crear el apuntador para asignarle el tamaño al struct desde ahí, aunque no sé si está bien así. Ya que al querer mostrar la información en la operación 3 no sé cómo.
¿A la función le pasas por parámetro el puntero al struct?
No, tengo más funciones xD
struct objetos
{
string num_ref, titulo, autor, editorial, tipo, num_edi, annio, nom_revista;
};
Ese es mi struct
Y encontré una manera de asignarle el tamaño al struct mediante entrada por teclado
El apuntador: objetos *o = new objetos[n];
Espera, estoy refrescando C++, jeje. Hace años que no toco
Ah, vale xD
02:35
Se me hace complicado volver 8:
02:46
@Sercroft1 Si solo declaras el apuntador en el if, solo lo podrás usar en ese ámbito. Por lo tanto, debes declararlo después de pedir la opción al usuario y luego creas el objeto cuando op == 1 se cumpla y con eso ya puedes usar el apuntador en cualquier lado. También debes darle un valor inicial, es decir, un NULL.
Vale, tengo algo. Te escribo respuesta
@Sercroft1 También debes verificar en las otras opciones cuando el puntero apunte NULL, así puedes mandarle al usuario un mensaje de error diciéndole, que primero debes ingresar la "información".

last day (15 days later) »