Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/10/2014, 12:32
dehm
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 14 años, 1 mes
Puntos: 10
Crear una máscara para ver determinados miembros de una estructura

Hola:

Continuando con temas relacionados con miembros de una estructura, ahora me pregunto si sería posible asociar los datos a una máscara de forma que ésta última me dijese cuales datos serán visibles y cuales no.

He implementado la idea asociando la máscara (un array de bool) con un array de int.....claro, esto es lo fácil
Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. void ver(const bool *mascara, const int *secuencia,int numColumnas);
  5.  
  6. const int numColumnas=5;
  7.  
  8. int main()
  9. {
  10.     bool mascara[numColumnas]= {true,true,true,false,false};
  11.     int numeros[numColumnas]= {4,8,6,3,7};
  12.  
  13.     ver(mascara,numeros,numColumnas);
  14.  
  15.     return 0;
  16. }
  17.  
  18. void ver(const bool *mascara, const int *secuencia,int numColumnas)
  19. {
  20.     for (int i=0; i<numColumnas; i++)
  21.     {
  22.         if (mascara[i])
  23.         {
  24.             cout<<secuencia[i]<<" - ";
  25.         }
  26.     }
  27. }

Pero lo que realmente me interesa sería implementar esa idea para los miembros de una estructura:
Algo como:

Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct datos
  5. {
  6.     int dato1;
  7.     float dato2;
  8.     char dato3;
  9.     char dato4[5];
  10.     bool dato5;
  11.     datos():dato1(3),dato2(2.33),dato3('X'),dato5(true)
  12.     {
  13.         strcpy(dato4,"Pepe");
  14.     }
  15. };
  16.  
  17. void ver(const bool *mascara, const datos&D,int numColumnas);
  18.  
  19. const int numColumnas=5;
  20.  
  21. int main()
  22. {
  23.     datos D;
  24.     bool mascara[numColumnas]= {true,true,true,false,false};
  25.     ver(mascara,D,numColumnas);
  26. return 0;
  27. }
  28.  
  29. void ver(const bool *mascara, const datos&D,int numColumnas)
  30. {
  31. //realmente la idea sería intentar que los datos de la estructura se pudieran ligar
  32. //al array que sirve de máscara para poder en un sólo bucle discriminar los datos
  33. //visibles y los que no lo serán...vamos...como si los miembros de la estructura
  34. //fueran un array
  35. }