• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

element listy STL jako parametr switch + wskaźnik na funkcje

Object Storage Arubacloud
0 głosów
322 wizyt
pytanie zadane 30 maja 2016 w C i C++ przez MeowingtonsPHD Nowicjusz (140 p.)

Tak jak w pytaniu czy istnieje jakaś możliwość przekazania wartości elementu listy (char) jako argumentu do switch case? 

A drugi problem to wskaźniki do funkcji. Alternatywą (jeśli nie da się przekazać elementu listy do switcha) byłoby przekazanie wskaźnika do funkcji jako elementu listy. 
Problem do rozwiązania jest następujący: muszę stworzyć listę metod które potrzebuje potem otworzyć zgodnie z kolejnością argumentów podanych przy wywołaniu programu. Podaje tu okrojony kod (orientacyjnie) żeby było wiadomo o co mi dokładnie chodzi. Ale nie wiem czy jest to dobre rozwiązanie. Bardzo dziękuję za wszelką pomoc :)

int main(int argc, char * argv[])
{
    list<char> lista;
    while(i<argc)
        {
            if (argv[i][0] == '-' )
            {
                switch (argv[i][1])
                {
                    case 'i':
                    {
                        /* wczytuje nazwe pliku z danymi */
                    }
                    case 'o':
                    {
                        /* wczytuje nazwe pliku do zapisu */
                    }
                    case 'G':
                    {
                        //funkcja z wywolaniem
                        oper = argv[i][1];
                        lista.push_back(oper);
                        i++;
                    }
                  /* ... dalej jeszcze kilka innych parametrow ... */
                    }
            else
                    {cout << "Błędne wywołanie\n\n";exit(1);}
            }
            /* teraz wywołuje liste z parametrami */
             for(list<char>::iterator list_iter = lista.begin(); list_iter != lista.end(); list_iter++)
             {
             cout<<&*list_iter<<endl;
                 /* w tym miejscu chciałem żeby wywołała się też odpowiednia funkcja 
                    przypisana do parametru */
             }
            
        }
}

 

1 odpowiedź

0 głosów
odpowiedź 30 maja 2016 przez criss Mędrzec (172,590 p.)
edycja 31 maja 2016 przez criss

Jeśli i tak mają się odpalać w kolejności podanej przy wywołaniu programu, to po co to wrzucać do jakiegoś kontenera? Ja bym zrobił sobie mape z kluczem char (reprezentujacym opcje programu) i funkcją mu odpowiadającą jako "mapowany typ". Np.:

std::map<char, std::function<void()>> m;

m['a'] = []() { ... }; 
...
/* przypisywanie opcjom odpowiadającym im funkcji */

while(i < argc)
{
    if(argv[i][0] == '-')
       m[argv[i][1]]();
    i++;
}

 

Podobne pytania

0 głosów
2 odpowiedzi 201 wizyt
pytanie zadane 13 stycznia 2017 w C i C++ przez czujek22 Dyskutant (7,670 p.)
0 głosów
1 odpowiedź 348 wizyt
pytanie zadane 29 marca 2017 w C i C++ przez krzakurts Obywatel (1,470 p.)
0 głosów
1 odpowiedź 451 wizyt
pytanie zadane 27 marca 2017 w C i C++ przez krzakurts Obywatel (1,470 p.)

92,539 zapytań

141,382 odpowiedzi

319,476 komentarzy

61,928 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...