Wpis z mikrobloga

potrzebuje zrobić switcha ale gdzie wartości switcha nie są jeszcze znane na etapie kompilacji (są to ID przycisków czytanych z pliku). jakie eleganckie rozwiązanie proponujecie inne niż else if

#cpp #programowanie
  • 29
wygląda na to że źle się wyraziłem. mam na myśli ze jak jest swtich

swtich(dupa)
{
case COS:
}

to warto COS nie jest znana na etapie kompilacji bo jest pobierana z pliku
@mapache: Czy kod w środku case'a jest stały, i tylko zawiera jakieś konkretne mapowanie? Jeśli tak, to po prostu zastąp całego case'a jakąś mapą.

Jeśli kod w każdym case jest specjalny, możesz go przenieść do osobnych metod/funkcji i zamiast case'a sobie zrobić mapę index -> klasa/metoda/wskaźnik do funkcji, którą wywołujesz.
@mapache: Chodzi mi bardziej o to, że wiesz co dla danych guzików robić. Czy one mają jakieś stałe ID, na podstawie kolejności wczytywania z pliku określasz co robią? Masz jeden przycisk to skąd wiesz co ma się dla niego wykonać (czym ma być operacja w case)?
@XD__: to że dany guzik jest danym guzikiem wiem dopiero z pliku, mam zapisane typu BrakeButton=1. ID guzika jest stałe w danym runtime, ale znany jest dopiero w runtime, nie na etapie kompilacji. to co potrzebuje to mieć switcha tego typu np

swtich(buttonID)
{
case BRAKE_BUTTON:
car.brake();
brake;
}

wcześniej miałem wszystkie ID guzików w enumie i były znane na etapie kompilacji to nie było problemu. problem taki że przy podłączaniu
@XD__: a nie sugeruj się mocno tym że BrakeButton=1. to nie chodzi o sam fakt w ogóle że przycisk hamowania to przycisk ten konkretny. tylko w ogóle że przycisk X jest przyciskiem X. tego kompletnie nie wiem dopóki nie odczytam pliku