switch mit Objekterzeugung



  • Ich habe in meiner main eine switch die mir je nach Anwendungsfall verschiedene Objekte erzeugt. Dabei ist mir nun etwas komisches aufgefallen:

    int ANWENDUNGSFALL = BEISPIEL;
    
      switch(ANWENDUNGSFALL)
      {
    
        case BEISPIEL:
        {
          DatenModul* D = new DatenModul(3);
          BeispielModul1* B1 = new BeispielModul1(D, "BeispielModul1");
          BeispielModul2* B2 = new BeispielModul2(D, "BeispielModul2");
        }
    
        case RUNDKURS:
        {
    
          DatenModul* D = new DatenModul(1);
    
        }
    
        case HINDERNIS:
        {
    
          DatenModul* D = new DatenModul(1);
    
        }
    
        case EINPARKEN:
        {
    
          DatenModul* D = new DatenModul(1);
    
        }
      }
    

    Eigentlich sollte das DatenModul nur einmal erstellt werden. Im Konstruktor des DatenModuls wird eine Logdatei auf dem Dateisystem erstellt und geöffnet. Das für mich verwunderliche ist nun, dass immer 4 Logdateien erstellt werden! Als würden alle 4 case Fälle eintreten, aber warum?



  • du hast das break; vergessen...

    bb



  • Schau noch einmal in dein Grundlagenbuch und achte auf das Wörtchen break;-)



  • Ach man! Danke :=)



  • Wenn dein switch grösser und unübersichtlicher wird, kann es sich lohnen, sich nach einer Alternative umzusehen. Dazu gibts im Forum hier einen Artikel, den du bei Interesse anschauen könntest: Object-Switching


Anmelden zum Antworten