friend vermeidbar?



  • Hallo,

    ich bin am programmieren einer Engine.
    Ich will das System so aufbauen, dass man eine Root-Klasse hat, die einem z.B. das Rendersystem erstellen kann, welches widerum Vertexbuffer erstellen kann usw. Grund dafür ist, dass es eine Client/Server-Engine wird und ich nicht möchte, dass jemand im Server einen VertexBuffer erstellen kann.
    Ich bin folgenden Weg gegangen, das umzusetzen:
    Die Klassen, die andere Klassen erstellen können, besitzen Create- und Release-Methoden. Die zu erstellenden Klassen haben Konstruktor und Destruktor immer als private deklariert und deklarieren die Klasse, die sie erstellen soll, als friend.

    Das sieht dann so aus (Pseudo):

    class Root
    {
      RenderSystem *Create() { new RenderSystem )
    };
    
    class RenderSystem
    {
     friend Root;
     private:
       Constructor/Destructor
    }
    

    Kann man das friend irgendwie vermeiden?
    Oder welches System würdet ihr mir empfehlen?



  • Ich wüsste nicht, warum du friends vermeiden wolltest, ich finds so ganz gut.

    mfg
    Glamdring



  • also ist der schutz letztendlich dadurch gegeben, daß nur die autorisierte funktion das Root-Objekt hat.
    da klingts für mich irgendwie natürlicher, daß das RenderSystem ne Referenz auf die Root im Konstruktor braucht. wer keine Root hat, kann dann auch keins bauen.


Anmelden zum Antworten