Zeiger auf fremde Klasse



  • Ich bin gerade dabei mit SFML zu programmieren. Ich habe eine frage die sowohl den style, als auch die sicherheit des Codes betrifft. Ich habe eine Klasse Window die das Sfml fenster erstellt und verwaltet. Nun habe ich eine Klasse StartWindow erstellt, die auf das Window seine Modelle anzeigt und die Events abfängt.

    // Main
    
    int main()
    {
        Window window(400,800, "Test");
    
        //StartWindow bekommt die Adresse von sf::RenderWindow
        StartWindow *startWindow = new StartWindow(window.GetWindowObjekt());
    
        //While
        if(Event=exit) { delete startWindow; window.Close(); } 
        if(Event=start) { delete startWindow; } //weiter zum game...
    
        GameWindow *gameWindow = new GameWindow(window.GetWindowObjekt());
    }
    

    Normal übergebe ich bei jeder Funktion den Zeiger. Ich habe mir überlegt die Adresse einfach zu speichern. OK?



  • Der Code sieht nicht sonderlich schön aus und enthält bereits auf dem ersten Blick Fehler. Schau dir mal deine Abfrage an, denn = und == unterscheiden sich gewaltig und das Programm tut nicht das, was du erwarten würdest!

    Insgesamt ist mir nicht ganz klar, was du jetzt eigentlich für eine Antwort erwartest?

    Wenn es dir um das Anzeigen verschiedener Bildschirme (Hauptmenü, Optionen, etc.) geht, dann such mal nach Game State Manager oder so bei Google.

    Dein Ansatz ist schon alleine wegen den ganzen Zeigern ziemlich unschön und gefährlich (Speicherleaks, unübersichtlich, etc.).

    Übrigebs heißt Objekt auf Englisch Object. Und ich würde den Zusatz ohnehin weglassen, da es bereits aus dem Funktionsnamen hervorgeht, dass ein Window-Objekt zurückgeben wird.



  • Wozu die ganzen new? Das ist sowohl langsam als auch nicht exception save.
    Was soll die Klasse StartWindow noch mal darstellen? Also das Konzept ist mir so ganz und gar nicht geheuer. (Die offensichtlichen Fehler habe ich jetzt mal ignoriert..)



  • Du zeigst irgendwie einen unvollständigen Code (deutest irgendwelche while-Schleifen an) und fragst, wie's mit der Sicherheit aussieht... Ganz schlecht sage ich. Ist es gewährleistet, dass eines der beiden Events 100%-ig auftritt? Wenn nicht, dann wird startWindow gar nicht gelöscht. gameWindow sowieso nicht.


Anmelden zum Antworten