Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/10/2014, 09:57
Avatar de leosansan
leosansan
 
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 12 años, 6 meses
Puntos: 49
Respuesta: Crear una máscara para ver determinados miembros de una estructura

Cita:
Iniciado por dehm Ver Mensaje
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.
.................................................. .......

Pero lo que realmente me interesa sería implementar esa idea para los miembros de una estructura:
Algo como:
...........................................
Perdona por la tardanza amigo dehm pero es que tiene "miga" tu propuesta.

Después de darle bastantes vueltas al asunto me ha salido lo que sigue , que cumple con el cometido, pero creo que debería de haber alguna solución más sencilla.

Código C++:
Ver original
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. struct datos
  6. {
  7.     int dato1 ;
  8.     float dato2 ;
  9.     char dato3 ;
  10.     char dato4 [ 5 ] ;
  11.     bool dato5 ;
  12.     datos():dato1 ( 3 ) , dato2 ( 2.33 ) , dato3 ( 'X' ) ,dato5 ( true )
  13.     {
  14.         strcpy ( dato4 , "Pepe" ) ;
  15.     }
  16. };
  17.  
  18. void ver ( const bool *mascara , const datos&D ,int numColumnas ) ;
  19.  
  20. const int numColumnas = 5 ;
  21.  
  22. int main ( void ) {
  23.     datos D ;
  24.     bool mascara [ numColumnas ]= { true , false , true , true , false } ;
  25.     ver( mascara , D , numColumnas ) ;
  26. return 0 ;
  27. }
  28.  
  29. void ver(const bool *mascara, const datos&D,int numColumnas) {
  30.   if ( mascara [ 0 ] ) cout << D.dato1 << " - " ;
  31.   if ( mascara [ 1 ] ) cout << D.dato2 << " - " ;
  32.   if ( mascara [ 2 ] ) cout << D.dato3 << " - " ;
  33.   if ( mascara [ 3 ] ) cout << D.dato4 << " - " ;
  34.   if ( mascara [ 4 ] ) cout << D.dato5 << " - " ;    
  35. }

La verdad es que aquí echo en falta algo tan elemental en Python como usar arrays cuyos elementos pueden ser de distintos "tipos" y claro todo es mucho más sencillo. Pero en fin, estamos en C/C++ y hay lo que hay.

Espero que te sirva al menos de orientación para otras opciones que se te puedan ocurrir. Y si eso sucede no te olvides de compartirlas aquí.

¡¡¡Saluditos!!!


Última edición por leosansan; 30/10/2014 a las 10:32