2011-11-09 3 views
5

Używam opcji programu do analizowania opcji wiersza poleceń w mojej aplikacji.Jak mieć opcję zezwalającą na inne opcje w Opcjach programu Boost bez użycia zmiennych?

Mam kilka opcji, takich jak -Ox, -Oy, -Oz, ... i chcę mieć super opcję -Owoce, która umożliwia Ox i Oy i inne -Osub, który umożliwia Oz i Ow.

Czy można to zrobić, korzystając z opcji programu Boost?

Najpierw chciałem sprawdzić wartość Oall, a następnie ręcznie włączam Ox i Oy, ale nie można edytować wartości po parsowaniu.

Chcę uniknąć używania zmiennych do przechowywania wartości Ox, Oy, ponieważ mogę mieć wiele z tych opcji.

Dzięki

+0

Jeśli chcesz uniknąć zmiennych dla 'Ox',' Oy' i 'Oz', jak wtedy masz zamiar dostępu do ich wartości? Innymi słowy, w jaki sposób planujesz wyzwalanie logiki związanej z tymi opcjami, gdy są one ustawione indywidualnie? – rcollyer

+0

Chciałem powiedzieć options.count ("Ox") –

+1

Zrozumiałem. Ale nie ma sposobu na powiązanie występowania jednego parametru z drugim w 'program_options'. Możesz jednak zaadaptować metodę @CharlesB, aby za każdym razem, gdy sprawdzałeś 'options.count (" Ox ")' również sprawdź 'options.count (" Oall ")'. – rcollyer

Odpowiedz

1

widzę to bardziej w logice Twojego programu tak wątpię Opcje programu przewidywały to. Wystarczy użyć

if (Oall) 
{Ox = Oy = Oz = true;} 

i takie

+1

To działa, ale z tym rozwiązaniem muszę użyć zmiennych mapujących każdą opcję i chcę tego przypadku uniknąć, jeśli to możliwe. –

+0

W końcu wydaje się, że jest to najlepsze rozwiązanie. Dzięki –