2012-02-08 13 views
13

He estado tratando de validar mis opciones pasadas con boost :: program_options. Mi comando tiene varios modos, cada uno de los cuales tiene params asociados que se pueden especificar. Lo que estoy tratando de hacer es asegurarse de que estos parametros asociados se transmiten con el modo, es decirOpciones de programa Boost con valores predeterminados siempre presentes cuando utilizo vm.count()

unicorn --fly --magic-wings-threshold 

Dónde --fly es el modo y --magic-wings-threshold es un parámetro asociado. Lo que noté es que --magic-wings-threshold tiene un valor predeterminado, p.

("magic-wings-threshold,w", po::value<double>(&wings_thresh)->default_value(0.8, "0.8"), 
      "Magic wings maximum power" 
) 

entonces no puedo usar

if (vm.count("magic-wings-threshold")({ 
    // do stuff 
} 

para detectar si el usuario pasa que PARAM.

Parece que los parámetros de valor predeterminados siempre se pasan y se detectan en vm.count(). ¿Alguien sabe una solución o alternativa?

+0

Todos los unicornios con los que estoy familiarizado no son fl y no tienes alas. ¿Quizás estabas pensando en Pegaso? – flies

Respuesta

0

Si quieres contar diferencia entre

-k option not provided 
-k provided 

Debe utilizar po :: value() ->implicit_value(), puede indicar a las diferentes situaciones con:

-k option not provided -> vm["k"]==0 
-k option provided  -> vm["k"]==1 
Cuestiones relacionadas