Recientemente comencé a usar boost::program_options
y me pareció muy conveniente. Dicho esto, falta una cosa: no pude codificarme de la mejor manera:boost :: program_options: iterando e imprimiendo todas las opciones
Me gustaría iterar sobre todas las opciones que se han recopilado en un boost::program_options::variables_map
para mostrarlas en la pantalla. Esto debería convertirse en una función de conveniencia, que simplemente puedo llamar para enumerar todas las opciones que se establecieron sin la necesidad de actualizar la función cuando agregue nuevas opciones o para cada programa.
Sé que puedo verificar y dar salida a las opciones individuales, pero como se dijo anteriormente, esto debería convertirse en una solución general que no tenga en cuenta las opciones reales. Además sé que puedo iterar sobre el contenido de variables_map
ya que es simplemente un std::map
extendido. Podría verificar el tipo de contenido en la variable almacenada boost::any
y usar .as<>
para convertirlo de nuevo al tipo apropiado. Pero esto significaría codificar un bloque de interruptor largo con un caso para cada tipo. Y esto no se ve como un buen estilo de codificación para mí.
Entonces la pregunta es, ¿hay una mejor manera de iterar sobre estas opciones y darles salida?
Gracias por el enlace y la idea acerca de RTTI . Tenía la esperanza de poder evitar crear una estructura para todos los tipos soportados que tendría que gestionar si los tipos aumentan, pero parece que esto no será posible. Básicamente, quería pasar el dinero a los tipos, como si admitieran 'operator <<' todo funciona bien, de lo contrario la compilación debería fallar. – shiin