<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Simplizität vs. Flexibilität]]></title><description><![CDATA[<p>hallo zusammen,</p>
<p>habe ein mächtiges design problem. vorab der thread könnte auch in &quot;rund um&quot; oder &quot;spiele programmierung&quot; stehen falls die mod's der meinung sind dann tut euch keinen zwang an. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
<p>so wie so ziemlich alle suche ich nach einem guten design für eine bibilothek.<br />
mein problem das ich meine engine nach einem &quot;herkömmlichen&quot; engine design, wie<br />
zb: ogre, ursprünglich mit abstrakten klassen oder virtuellen klassen geplant war und vom benutzer mittels plugin's oder benutzer klassen überschrieben werden sollte. dieses steht natürlich voraus das der benutzer objekte selber erstellt und diese dann entsprechend verteilt.<br />
in etwa so</p>
<pre><code class="language-cpp">class Engine		// abstrakte klasse
{
	public:
		Engine();
		virtual ~Engine();

	protected:
		WindowUserInterface	*m_pWUI;
		Renderer		*m_pRenderer;
		SceneGraph		*m_pSceneGraph;
};

class Game : public Engine
{
	public:
		bool Init()
		{
			// objekt entweder von einer benutzer klasse
			// oder plugin oder defaultklasse
			// der bibilothek erstellen

			m_pWUI = new WindowUserInterfaceWin32;
			// ..
			m_pRenderer = new Renderer();
			m_pRenderer-&gt;SetTargetWindow(m_pWUI);
			// ..
			m_pSceneGraph = new SceneGraph();
			// ..
			m_pSceneGraph-&gt;SetRenderer(m_pRenderer);		
			// ..
		}
};
</code></pre>
<p>jetzt würde ich zweite möglichkeit, mittels poliycs im weittesten sinne, vorziehen</p>
<pre><code class="language-cpp">template&lt;
	class _Wui,
	template &lt;class, class&gt; class _Renderer,
	class _RendererSettings,
	template &lt;class&gt; class _SceneGraph&gt; class Engine
{
	public:
		Engine()
		:	m_Renderer(&amp;m_WUI),
			m_SceneGraph(&amp;m_Renderer)
		{ }
		virtual ~Engine() { }

	protected:
		_Wui							m_WUI;
		_Renderer&lt;_Wui, _RendererSettings&gt;			m_Renderer;
		_SceneGraph&lt;_Renderer&lt;_Wui, _RendererSettings&gt; &gt;	m_SceneGraph;
};

typedef Engine&lt;
	DefaultWui,
	Renderer,
	DefaultRendererSettings,
	SceneGraph&gt;	DefaultEngine;

class Game : public DefaultEngine
{
// ..
};
</code></pre>
<p>meine bedenken liegen darin das ich den benutzer mittels den vielen templates erschlage. zb würde ich render eigenschaften über poliycs festlegen statt zur laufzeit diese zu bestimmen. wie zb culling modus der renderes, shading modus, buffer (stencil usw), usw usw. mir ist auch klar das einige dinge nicht schlecht wären wenn man sie zur laufzeit änderen aber diese könnte man ja wieder in policys packen. somit würde ich für den renderer sechs bis zehn templates parameter schätzen was natürlich sehr viel ist.</p>
<p>welches design würde ihr vorziehen? eine begründung wäre nicht schlecht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
vielleicht fällt irgend jemanden ein entscheidenen vor- bzw nachteil ein.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/103303/simplizität-vs-flexibilität</link><generator>RSS for Node</generator><lastBuildDate>Thu, 13 Aug 2026 15:38:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/103303.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 07 Mar 2005 10:53:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Simplizität vs. Flexibilität on Mon, 07 Mar 2005 10:53:59 GMT]]></title><description><![CDATA[<p>hallo zusammen,</p>
<p>habe ein mächtiges design problem. vorab der thread könnte auch in &quot;rund um&quot; oder &quot;spiele programmierung&quot; stehen falls die mod's der meinung sind dann tut euch keinen zwang an. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
<p>so wie so ziemlich alle suche ich nach einem guten design für eine bibilothek.<br />
mein problem das ich meine engine nach einem &quot;herkömmlichen&quot; engine design, wie<br />
zb: ogre, ursprünglich mit abstrakten klassen oder virtuellen klassen geplant war und vom benutzer mittels plugin's oder benutzer klassen überschrieben werden sollte. dieses steht natürlich voraus das der benutzer objekte selber erstellt und diese dann entsprechend verteilt.<br />
in etwa so</p>
<pre><code class="language-cpp">class Engine		// abstrakte klasse
{
	public:
		Engine();
		virtual ~Engine();

	protected:
		WindowUserInterface	*m_pWUI;
		Renderer		*m_pRenderer;
		SceneGraph		*m_pSceneGraph;
};

class Game : public Engine
{
	public:
		bool Init()
		{
			// objekt entweder von einer benutzer klasse
			// oder plugin oder defaultklasse
			// der bibilothek erstellen

			m_pWUI = new WindowUserInterfaceWin32;
			// ..
			m_pRenderer = new Renderer();
			m_pRenderer-&gt;SetTargetWindow(m_pWUI);
			// ..
			m_pSceneGraph = new SceneGraph();
			// ..
			m_pSceneGraph-&gt;SetRenderer(m_pRenderer);		
			// ..
		}
};
</code></pre>
<p>jetzt würde ich zweite möglichkeit, mittels poliycs im weittesten sinne, vorziehen</p>
<pre><code class="language-cpp">template&lt;
	class _Wui,
	template &lt;class, class&gt; class _Renderer,
	class _RendererSettings,
	template &lt;class&gt; class _SceneGraph&gt; class Engine
{
	public:
		Engine()
		:	m_Renderer(&amp;m_WUI),
			m_SceneGraph(&amp;m_Renderer)
		{ }
		virtual ~Engine() { }

	protected:
		_Wui							m_WUI;
		_Renderer&lt;_Wui, _RendererSettings&gt;			m_Renderer;
		_SceneGraph&lt;_Renderer&lt;_Wui, _RendererSettings&gt; &gt;	m_SceneGraph;
};

typedef Engine&lt;
	DefaultWui,
	Renderer,
	DefaultRendererSettings,
	SceneGraph&gt;	DefaultEngine;

class Game : public DefaultEngine
{
// ..
};
</code></pre>
<p>meine bedenken liegen darin das ich den benutzer mittels den vielen templates erschlage. zb würde ich render eigenschaften über poliycs festlegen statt zur laufzeit diese zu bestimmen. wie zb culling modus der renderes, shading modus, buffer (stencil usw), usw usw. mir ist auch klar das einige dinge nicht schlecht wären wenn man sie zur laufzeit änderen aber diese könnte man ja wieder in policys packen. somit würde ich für den renderer sechs bis zehn templates parameter schätzen was natürlich sehr viel ist.</p>
<p>welches design würde ihr vorziehen? eine begründung wäre nicht schlecht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
vielleicht fällt irgend jemanden ein entscheidenen vor- bzw nachteil ein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/739360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/739360</guid><dc:creator><![CDATA[miller_m]]></dc:creator><pubDate>Mon, 07 Mar 2005 10:53:59 GMT</pubDate></item><item><title><![CDATA[Reply to Simplizität vs. Flexibilität on Mon, 07 Mar 2005 11:14:03 GMT]]></title><description><![CDATA[<p>Nimm nen Generator.</p>
<p>Du schreibst ne GeneratorKlasse die mit wenigen eingabedaten dir eine Config Klasse ausspuckt die alle nötigen typedefs hat.</p>
<p>So kann jeder der will selber so eine Config Klasse machen und die richtigen typedefs setzen, und wer das nicht will verwendet den Generator:</p>
<pre><code class="language-cpp">class Game : public Engine &lt;BasicOpenGLGenerator&lt;DynamicEffects::True, Shader::Level1, NullPolicy, NullPolicy&gt; &gt;
{...}
</code></pre>
<p>sowas ist super benutzbar.</p>
<p>solche Generatoren werden aber leider viel zu selten verwendet <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/739382</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/739382</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Mon, 07 Mar 2005 11:14:03 GMT</pubDate></item><item><title><![CDATA[Reply to Simplizität vs. Flexibilität on Mon, 07 Mar 2005 12:00:56 GMT]]></title><description><![CDATA[<p>hab ich mir schon das du dafür bist. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Du schreibst ne GeneratorKlasse die mit wenigen eingabedaten dir eine Config Klasse ausspuckt die alle nötigen typedefs hat.<br />
So kann jeder der will selber so eine Config Klasse machen und die richtigen typedefs setzen, und wer das nicht will verwendet den Generator:</p>
</blockquote>
<p>so etwas ähnliches hätte ich dann auch vorgehabt zu erstellen bzw ich habe so etwas ähnliches für die einstellungen des renderes gemacht (auf papier)<br />
ich werde natürlich auch mehrere mögliche &quot;einstellungen&quot; mittels typedefs<br />
vorschlagen in der der user einfach auswählt und trotzdem flexibel für eigene ideen bleibt falls im etwas nicht zusagt.<br />
aber nach wie vor drängt sich mir die frage nach der template flut auf die auch bei einer solchen generator klasse ziemlich hoch ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/739438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/739438</guid><dc:creator><![CDATA[miller_m]]></dc:creator><pubDate>Mon, 07 Mar 2005 12:00:56 GMT</pubDate></item><item><title><![CDATA[Reply to Simplizität vs. Flexibilität on Mon, 07 Mar 2005 12:12:25 GMT]]></title><description><![CDATA[<p>miller_m schrieb:</p>
<blockquote>
<p>aber nach wie vor drängt sich mir die frage nach der template flut auf die auch bei einer solchen generator klasse ziemlich hoch ist.</p>
</blockquote>
<p>Du meinst die ganzen Policies?<br />
Für dich ist es eine Flut, aber für den Anwender nicht, weil du ja schon die meisten Sachen implementierst.</p>
<p>Oder meinst du die vielzahl der Templateparameter?<br />
Ja, dafür hast du die Generatoren die jeweils nur 3 - 5 params haben also nicht so kompliziert sind.</p>
<p>Du kannst natürlich auch ein paar Policies zusammen legen, wenn sie einander ähnlich sind. Beispiel:<br />
Kein CompareLess, CompareEqual, CompareGreater sondern nur 1 Policy Compare.</p>
<p>Oder meinst du mit Templateflut doch etwas anderes...?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/739460</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/739460</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Mon, 07 Mar 2005 12:12:25 GMT</pubDate></item><item><title><![CDATA[Reply to Simplizität vs. Flexibilität on Mon, 07 Mar 2005 12:43:04 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Oder meinst du die vielzahl der Templateparameter?<br />
Ja, dafür hast du die Generatoren die jeweils nur 3 - 5 params haben also nicht so kompliziert sind.</p>
</blockquote>
<p>genau das meine ich, ich bin der meinung das ich damit einen user der bibilothek überforden könnte. oder ich mach mir einfach nur zu viele gedanken. die frage ist nur wieder warum machen es dann zb die leute von ogre, irrlicht oder neo oder was auch immer nicht so? bsp: wieso sollte meine engine shader unterstützen wenn gerade nichst mit shadern gemacht wird, natürlich ist dies zur laufzeit meistens nur eine abfrage aber genau diese macht keinen sinn. den die template variante bringt meiner meinung nach nur vorteile bis auf meine bedenken mit der anzahl der parameter die sich aber langsam verflüchtigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/739483</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/739483</guid><dc:creator><![CDATA[miller_m]]></dc:creator><pubDate>Mon, 07 Mar 2005 12:43:04 GMT</pubDate></item><item><title><![CDATA[Reply to Simplizität vs. Flexibilität on Mon, 07 Mar 2005 14:02:24 GMT]]></title><description><![CDATA[<p>miller_m schrieb:</p>
<blockquote>
<p>die frage ist nur wieder warum machen es dann zb die leute von ogre, irrlicht oder neo oder was auch immer nicht so?</p>
</blockquote>
<p>Kenne mich da leider nicht aus, aber viele Libraries sind alt und nutzen die Features von C++ nicht besonders gut aus.</p>
<p>Manche wollen auch übermäßig kompatibel mit alten Compilern sein...</p>
<p>Ich würde ein Policybased Design aber erstmal als gut betrachten. Denn was spricht denn wirklich dagegen? Dass der User den es interessiert sich mit zig Template parameter rumschlagen muss: ja. Aber das macht man genau 1mal, danach hat man die richtigen Parameter. Und wenn ich das nicht will, nehme ich eins von deinen Defaultsets.</p>
<p>Wie handhabt man denn die Features die aktiviert sein sollen bei anderen Engines? Habe noch nichts mit Grafikprogrammierung gemacht.</p>
<blockquote>
<p>bsp: wieso sollte meine engine shader unterstützen wenn gerade nichst mit shadern gemacht wird, natürlich ist dies zur laufzeit meistens nur eine abfrage aber genau diese macht keinen sinn.</p>
</blockquote>
<p>Hängt davon ab. Viele sachen will man sicher erst zur runtime setzen, weil der user sie ein und abschalten kann. aber da kenne ich mich nicht aus...</p>
<blockquote>
<p>den die template variante bringt meiner meinung nach nur vorteile bis auf meine bedenken mit der anzahl der parameter die sich aber langsam verflüchtigen.</p>
</blockquote>
<p>WIe gesagt: ein paar Defaultsets + ein paar gute Generatoren und der User hat es nicht mehr mit Templates zu tun, sondern mit einem Config Framework.</p>
<p>Ich finde nämlich folgendes kein bisschen abschreckend:</p>
<pre><code class="language-cpp">class Game : public Engine &lt;
  DefaultConfig&lt; VisualEffects::enabled, Audio::ThreeD, SomeStuff::disabled &gt;
&gt;
</code></pre>
<p>dass DefaultConfig sehr komplex ist merkt der User garnicht, er setzt die Parameter einfach. Da ist eigentlich nichts kompliziertes dabei.</p>
<p>Ist genau wie<br />
vector&lt;shared_ptr&lt;int&gt; &gt; v;<br />
sort(v.begin(), v.end());</p>
<p>das ist auch extrem komplex, weil du ja templates, iteratoren, refcounting etc. hast. aber der user merkt nichts...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/739572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/739572</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Mon, 07 Mar 2005 14:02:24 GMT</pubDate></item><item><title><![CDATA[Reply to Simplizität vs. Flexibilität on Mon, 07 Mar 2005 15:23:50 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Kenne mich da leider nicht aus, aber viele Libraries sind alt und nutzen die Features von C++ nicht besonders gut aus.<br />
Manche wollen auch übermäßig kompatibel mit alten Compilern sein...</p>
</blockquote>
<p>könnten natürlich gründe sein</p>
<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Wie handhabt man denn die Features die aktiviert sein sollen bei anderen Engines? Habe noch nichts mit Grafikprogrammierung gemacht.</p>
</blockquote>
<p>ich kenne es, von ein paar open source engines die ich mir angeschaut habe,<br />
das so ziemlich jede technik und feature implementiert wird und der benutzer<br />
mittels enums entscheidet was er wie benutzen möchte, sprich nen haufen getter/setter</p>
<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Hängt davon ab. Viele sachen will man sicher erst zur runtime setzen, weil der user sie ein und abschalten kann. aber da kenne ich mich nicht aus...</p>
</blockquote>
<p>ist klar aber ich denke das sich vieles auch von anfang an mit einer vernüftigen planung umsetzen lässt. shader waren jetzt ein blödes beispiel.<br />
bsp: culling mode. warum sollte ich den culling modus zur laufzeit verändern<br />
sollen, macht meiner meinung nach keinen sinn ich könnte ja meine modele alle<br />
einheitlich erstellen somit wäre dieses problem gelösst.</p>
<p>noch ein punkt fällt mir, das updaten.<br />
folgendes szenario (gehe zwar nicht davon aus das irgend jemand meine engine benutzen wird, aber gedanken sollte man sich trotzdem machen):</p>
<p>ein benutzer meiner &quot;herkömmlichen&quot; engine erstellt ein spiel mit dieser und<br />
stellt einen bug fest, teilt mir diesen mit und ich ändere dieses und lasse<br />
im dann die geänderte dll zukommen die er dann weiter an seinen kunden gibt.<br />
nicht sehr viel probleme und alle ist gut.</p>
<p>bei der template variante könnte ich keine dll erzeugen sondern müsste dem benutzer die entsprechenden dateien zukommen lassen und dieser kompiliert sein spiel auf ein neues und gibt dieses weiter. egal wie ich es mache er müsste die<br />
neuen dateien immer mit reinkompilieren.</p>
<p>was hälst du davon?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/739656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/739656</guid><dc:creator><![CDATA[miller_m]]></dc:creator><pubDate>Mon, 07 Mar 2005 15:23:50 GMT</pubDate></item><item><title><![CDATA[Reply to Simplizität vs. Flexibilität on Mon, 07 Mar 2005 17:05:44 GMT]]></title><description><![CDATA[<p>miller_m schrieb:</p>
<blockquote>
<p>das so ziemlich jede technik und feature implementiert wird und der benutzer<br />
mittels enums entscheidet was er wie benutzen möchte, sprich nen haufen getter/setter</p>
</blockquote>
<p>Dachte ich mir. Da hast du doch auch einen enormen umfang an settern, oder? Da sind die Generatoren sogar freundlicher <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<blockquote>
<p>noch ein punkt fällt mir, das updaten.</p>
</blockquote>
<p>Klar, durch Templates verlierst du die modularitaet. Daran hatte ich nicht gedacht, ich bin Programmiertechnischer Sicht an die Sache gegangen.</p>
<p>Sowas ist bei Spielen vermutlich ein grosses Problem, weil man oefter Patches released als bei einer normalen Anwendung. Da musst du halt echt abwegen...</p>
<p>Aber wie gesagt: auf diesem Gebiet kenne ich mich nicht aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/739748</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/739748</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Mon, 07 Mar 2005 17:05:44 GMT</pubDate></item><item><title><![CDATA[Reply to Simplizität vs. Flexibilität on Wed, 09 Mar 2005 08:02:33 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Dachte ich mir. Da hast du doch auch einen enormen umfang an settern, oder?</p>
</blockquote>
<p>im moment noch nicht da ich noch so viele features habe. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
aber es würde wohl darauf hinausgelaufen.</p>
<p>naja du hast mir schon weitergeholfen ich werde mich vermutlich, noch eine nacht darüber schlafen, für das template design entscheiden. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/741094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/741094</guid><dc:creator><![CDATA[miller_m]]></dc:creator><pubDate>Wed, 09 Mar 2005 08:02:33 GMT</pubDate></item><item><title><![CDATA[Reply to Simplizität vs. Flexibilität on Tue, 15 Mar 2005 14:19:11 GMT]]></title><description><![CDATA[<p>hey shade,</p>
<p>bräucht nochmal deine hilfe oder falls jemand anders sich auch damit beschäftigen möchte nur zu.<br />
mein scenegraph war im groben zügen in etwa so aufgebaut das der scenegraph alle nodes instanziert. jedes node kann verschiedene objekte annehmen die alle von der abstrakten klasse Obj erben. im groben so (nicht auf fehler oder design achten habe jetzt einfach mal schnell zusammengeschrieben)</p>
<pre><code class="language-cpp">class Obj
{
	public:
		virtual ~Obj() { };
		virtual void Render(Renderer *pRenderer) = 0;
};

class Bar : public Obj
{
	public:
		void Render(Renderer *pRenderer) { std::cout &lt;&lt; &quot;nur nen test&quot; &lt;&lt; std::endl; }
};

class Node
{
	public:
		bool AddChild(const std::string &amp;strName, Node *pChild)
		{
			return m_ChildNodes.insert(NodeList::value_type(strName, pChild)).second;
		}

		bool AttachObject(const std::string &amp;strName, Obj *pObj)
		{
			return m_ObjLstName.insert(ObjectList::value_type(strName, pObj)).second;
		}

		void Render()
		{
			ObjectList::const_iterator itObj;
			for(itObj = m_ObjLstName.begin(); itObj != m_ObjLstName.end(); ++itObj)
				itObj-&gt;second-&gt;Render();

			NodeList::iterator itChild;
			for(itChild = m_ChildNodes.begin(); itChild != m_ChildNodes.end(); ++itChild)
				itChild-&gt;second-&gt;Render();
		}
	private:
		typedef std::map&lt;std::string, Node*&gt; NodeList;
		typedef std::map&lt;std::string, Obj*&gt; ObjectList;

		ObjectList			m_ObjLstName;
		NodeList			m_ChildNodes;
};

class SceneGraph
{
	public:
		SceneGraph()
		{
			m_pRootNode = CreateSceneNode(&quot;root&quot;);
		}

		Node *CreateSceneNode(const std::string &amp;strName)
		{
	 		Node *pNode = new Node();

			m_SceneNodes.insert(SceneNodeList::value_type(strName, pNode));
			return pNode;
		}

		Node *GetRootNode() { return m_pRootNode; }

	private:
		typedef std::map&lt;std::string, Node*&gt;	SceneNodeList;
		SceneNodeList				m_SceneNodes;
		Node					*m_pRootNode;
};
</code></pre>
<p>das ganze hatte den vorteil das der graph alle nodes kannte und ich für die schatten berechnung nicht den ganzen baum nochmal zu travieriseren musste sondern alle nodes schon parat habe. (war noch nicht implementiert aber so gedacht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> )<br />
jetzt habe ich ein problem mit dem templatesieren (neues wort <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> ) diesen graphen<br />
bsp: die renderer klasse wurde jetzt mit policys erweitert somit würde meine pure virtuelle methode in obj nicht mehr hinhauen denn ich müsste ja eine template als parameter übergeben, aber templates und virtual gehen ja afaik nicht, den templates werden zur compiletime aufgelösst während das virtual ja erst von der laufzeitumgebung überschrieben wird. jetzt zerbreche ich mir schon ne ganze weile den kopf wie ich den graphen und die nodes möglichst einfach und generisch umbauen kann, aber mir fällt nichst ein. ich erwarte mit sicherheit keine musterlösung sondern nur ein wink in die richtig</p>
]]></description><link>https://www.c-plusplus.net/forum/post/745062</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/745062</guid><dc:creator><![CDATA[miller_m]]></dc:creator><pubDate>Tue, 15 Mar 2005 14:19:11 GMT</pubDate></item><item><title><![CDATA[Reply to Simplizität vs. Flexibilität on Tue, 15 Mar 2005 14:35:08 GMT]]></title><description><![CDATA[<p>Vielleicht hilft das: <a href="http://schornboeck.net/artikel/virtual_template.htm" rel="nofollow">http://schornboeck.net/artikel/virtual_template.htm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/745083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/745083</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Tue, 15 Mar 2005 14:35:08 GMT</pubDate></item><item><title><![CDATA[Reply to Simplizität vs. Flexibilität on Tue, 15 Mar 2005 14:48:21 GMT]]></title><description><![CDATA[<p>ich werd es mir mal durchlesen. danke</p>
<p>[ot]<br />
warum wird die seite nicht in deiner inhalt.htm angezeigt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> bis jetzt bin ich noch nicht darauf gestossen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/745107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/745107</guid><dc:creator><![CDATA[miller_m]]></dc:creator><pubDate>Tue, 15 Mar 2005 14:48:21 GMT</pubDate></item></channel></rss>