2012-02-08 17 views
13

Próbowałem sprawdzić poprawność moich przekazanych opcji za pomocą boost :: program_options. Moje polecenie ma kilka trybów, z których każdy ma przypisane parametry, które można określić. Co próbuję zrobić, to upewnić się te związane params zapadają trybie, tjZwiększanie opcji programu o wartości domyślne zawsze obecne podczas korzystania z vm.count()

unicorn --fly --magic-wings-threshold 

Gdzie --fly jest tryb i --magic-wings-threshold jest związany param. Zauważyłem, że jeśli --magic-wings-threshold ma wartość domyślną, np.

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

wtedy nie mogę korzystać

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

wykryć, jeśli użytkownik przeszedł ten param.

Wygląda na to, że domyślne parametry wartości są zawsze przekazywane i wykrywane w vm.count(). Czy ktoś zna obejście lub alternatywę?

+0

Wszystkie jednorożce, które znam, nie fl y i nie mają skrzydeł. Być może myślałeś o Pegasusie? – flies

Odpowiedz

0

Jeżeli chcesz poinformować różnicę między

-k option not provided 
-k provided 

Należy wykorzystać PO :: wartość() ->implicit_value(), można powiedzieć różne sytuacje z:

-k option not provided -> vm["k"]==0 
-k option provided  -> vm["k"]==1 
Powiązane problemy