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.