uterschiedlicher Programmverlauf bei dateiinhalt



  • Hi,

    bei Spielen sieht man oft config.txt dateien wo dann sowas drinsteht wie:

    debug = true
    

    so ne datei zu erstellen und auszulesen ist kein prob die frage ist kann man sowas "automatisieren" kann, sodass man nicht mehr sowas machen muss:

    ...
    
    string ueberfluessig;
    bool debug;
    
    ifstream config("config.txt");
    
    config >> ueberfluessig;     // Weil "debug" und "=" ueberfluessig sind
    config >> ueberfluessig;
    config >> debug;             // Den Wert von debug einlesen
    
    if(debug == true)
    {
       void writeLogFile(...)
       {
          ...                   // Funktion zum eintragen von LogFile einträgen
       }
    }
    else
    {
       void writeLogFile(...)
       {}                       // Funktion macht nichts, da debug false ist
    }
    
    ...
    

    Mfg Yazoo



  • Ich würde es ja über Interfaces machen.

    class Logger
    {
    public:
        virtual log(const std::string&) = 0;
        //...
    };
    // andere Datei:
    class DebugLogger : public Logger
    // andare Datei:
    class ReleaseLogger : public Logger
    

    Und dann einfach ne Factory-Funktion zum erstellen:

    // Header
    Logger* createLogger(bool debug);
    // Source
    {
        if (debug)
            return new DebugLogger;
        else
            return new ReleaseLogger;
    }
    

    Natürlich sollte man sich da noch ein besseres Konzept überlegen. So ein Raw-Pointer ist nicht gerade optimal. Vllt einen shared_ptr oder so.

    EDIT:
    Allerdings empfiehlt es sich bei Loggern, die nur im Debug-Modus aktiv sind, Makros zu benutzen, die zu nichts werden, wenn nicht debuggt wird, kostet sonst zuviel Performance.

    Gruß
    Don06


Anmelden zum Antworten