Ver Mensaje Individual
  #4 (permalink)  
Antiguo 17/10/2014, 03:03
dehm
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: ¿Cómo fijar un dato de una estructura a la hora de introducirlo?

Hola Profesor_Falken:

No estoy seguro de entender tu planteamiento.
He desarrollado el constructor de la estructura en función de la solución que me propones:

Código C++:
Ver original
  1. #include <iostream>
  2. #define NEW_POLIGONO(P) struct poligono P = {.n_lados = 4, .color ="verde"}
  3.  
  4. using namespace std;
  5.  
  6. struct poligono
  7. {
  8.     int n_lados;
  9.     char color[20];
  10.     poligono(int n, const char* c)
  11.     {
  12.         n_lados=n;
  13.         strcpy (color,c);
  14.     }
  15. };
  16.  
  17. int main()
  18. {
  19.     NEW_POLIGONO(mipoligono);
  20.     cout<<mipoligono.n_lados<<" - "<<mipoligono.color<<endl;
  21.     return 0;
  22. }

Y (obviamente) funciona. (Me apunto aprender a sacarle partido a las macros)
Pero no me da la flexibilidad que necesito o que quiero.
Sería algo así:

Código C++:
Ver original
  1. std::list<poligono>listapoligonos;
  2. int num;
  3. char aux[20];
  4. char respuesta='S';
  5. do
  6.    {
  7.     /*en algun momento del bucle de inserción de datos, me gustaría fijar algún dato de la estructura de forma que no tuviera que definirlo  en caso de encontrarme varios repetidos.*/
  8.     /* Igualmente "desbloquear" ese dato cuando no me interese, y que me vuelva a pedir por él*/
  9.  
  10.     std::cin>>num;
  11.     std::cin>>aux;
  12.     poligono P(num,aux);
  13.     listapoligonos.push_back(P);
  14.     std::cout<<"¿Quieres introducir otro poligono?"<<std::endl;
  15.     std::cin>>respuesta;
  16.     }
  17.     while (respuesta=='s' || respuesta=='S');

Gracias por la respuesta y disculpa si no la he entendido correctamente