<?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[Globales Ausgabesystem [Ideensuche]]]></title><description><![CDATA[<p>Hallo und guten Abend!</p>
<p>Ich bin an einer 2D-Engine dran und möchte nun eine Möglichkeit erstellen, Fehler usw auszugeben. Um das zu veranschaulichen, hier etwas Pseudocode:</p>
<pre><code class="language-cpp">void Klasse::func1(typ blabla)
{
    HRESULT hr = CreateSomething(blabla);
    if (FAILED(hr))
        OutputDEBUG(&quot;Fehler beim Erstellen von etwas&quot;);
}
</code></pre>
<p>Die Meldungen sollen irgendwie angezeigt werden können(am Besten im DX-Fenster).<br />
Nun ist nur die Frage, wie ich das elegant umsetze.<br />
Ich habe alle Teile der Engine natürlich auf verschiedene Header-Dateien verteilt. Ich habe eine World-Klasse, die das eigentliche Fenster verwaltet. Jede Klasse der Engine includiert diese.<br />
Die Frage ist nicht, wie ich das mit DX anzeige! Ich möchte lediglich etwas haben, was aus jedem Teil der Engine Nachrichten ans Hauptfenster schicken kann.</p>
<p>Eine Idee(oder auch mehrere), wie ich das umsetzen kann?</p>
<p>Ich bedanke mich im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/280450/globales-ausgabesystem-ideensuche</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 03:07:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/280450.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 15 Jan 2011 22:17:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Globales Ausgabesystem [Ideensuche] on Sat, 15 Jan 2011 22:17:50 GMT]]></title><description><![CDATA[<p>Hallo und guten Abend!</p>
<p>Ich bin an einer 2D-Engine dran und möchte nun eine Möglichkeit erstellen, Fehler usw auszugeben. Um das zu veranschaulichen, hier etwas Pseudocode:</p>
<pre><code class="language-cpp">void Klasse::func1(typ blabla)
{
    HRESULT hr = CreateSomething(blabla);
    if (FAILED(hr))
        OutputDEBUG(&quot;Fehler beim Erstellen von etwas&quot;);
}
</code></pre>
<p>Die Meldungen sollen irgendwie angezeigt werden können(am Besten im DX-Fenster).<br />
Nun ist nur die Frage, wie ich das elegant umsetze.<br />
Ich habe alle Teile der Engine natürlich auf verschiedene Header-Dateien verteilt. Ich habe eine World-Klasse, die das eigentliche Fenster verwaltet. Jede Klasse der Engine includiert diese.<br />
Die Frage ist nicht, wie ich das mit DX anzeige! Ich möchte lediglich etwas haben, was aus jedem Teil der Engine Nachrichten ans Hauptfenster schicken kann.</p>
<p>Eine Idee(oder auch mehrere), wie ich das umsetzen kann?</p>
<p>Ich bedanke mich im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2007084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2007084</guid><dc:creator><![CDATA[Meloen]]></dc:creator><pubDate>Sat, 15 Jan 2011 22:17:50 GMT</pubDate></item><item><title><![CDATA[Reply to Globales Ausgabesystem [Ideensuche] on Sat, 15 Jan 2011 23:54:35 GMT]]></title><description><![CDATA[<p>meinst du eine Singleton log-klasse?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2007104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2007104</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Sat, 15 Jan 2011 23:54:35 GMT</pubDate></item><item><title><![CDATA[Reply to Globales Ausgabesystem [Ideensuche] on Sun, 16 Jan 2011 00:04:27 GMT]]></title><description><![CDATA[<p>Könntest du vielleicht mehr dazu sagen? Der Wikipedia-Eintrag dazu ist sehr verwirrend, obwohl die Funktion dieses Musters wahrscheinlich genau das ist, was ich suche.</p>
<p>Sollte etwa das machen, was <a href="http://msdn.microsoft.com/en-us/library/aa363362%28v=vs.85%29.aspx" rel="nofollow">OutputDebugString</a> macht, nur dass die Ausgabe eben im Fenster (oder per MessageBox) erfolgen sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2007106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2007106</guid><dc:creator><![CDATA[Meloen]]></dc:creator><pubDate>Sun, 16 Jan 2011 00:04:27 GMT</pubDate></item><item><title><![CDATA[Reply to Globales Ausgabesystem [Ideensuche] on Sun, 16 Jan 2011 00:22:00 GMT]]></title><description><![CDATA[<p>dein Stichwort ist &quot;designpattern singleton&quot;<br />
<a href="http://de.wikipedia.org/wiki/Singleton_%28Entwurfsmuster%29" rel="nofollow">http://de.wikipedia.org/wiki/Singleton_(Entwurfsmuster)</a></p>
<p>du erstellst damit eine Klasse die keinen öffentlichen Konstruktor hat.<br />
zB:</p>
<pre><code class="language-cpp">class Log
{
public:
   static Log&amp; Get(){static Log instance; return instance;}

   bool LogMsg(const char* str);
   ~Log();

private:
   Log();        
   Log(const Log&amp;);
   Log operator= (const Log&amp;);
};
</code></pre>
<p>damit kannst von überall eine LogMsg() aufrufen, solange der Header eingebunden ist.</p>
<p>einfach über</p>
<pre><code class="language-cpp">Log::Get().LogMsg(&quot;Mein Fehler&quot;);
</code></pre>
<p>keine Garantie auf vollständigkeit. ich habe das jetzt schnell so hingetippt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2007110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2007110</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Sun, 16 Jan 2011 00:22:00 GMT</pubDate></item><item><title><![CDATA[Reply to Globales Ausgabesystem [Ideensuche] on Sun, 16 Jan 2011 02:46:34 GMT]]></title><description><![CDATA[<p>OK, ich habe das jetzt so eingebaut:</p>
<p>.h</p>
<pre><code class="language-cpp">class Singleton {
public:
   static Singleton* GetInstance();
   ~Singleton();
private:
   Singleton();
   static Singleton* pSingleton;		// singleton instance
};
</code></pre>
<p>.cpp</p>
<pre><code class="language-cpp">Singleton* Singleton::pSingleton= NULL;

Singleton::Singleton()
{
   // do init stuff
}

Singleton::~Singleton()
{
   // destructor
}

Singleton* Singleton::GetInstance()
{
	if (pSingleton== NULL) {
		pSingleton = new Singleton();
	}
	return pSingleton;
}
</code></pre>
<p>Ich hab jetzt nur das Problem, dass der Destruktor nicht automatisch aufgerufen wird, daher muss ich ihn selbst aufrufen:</p>
<pre><code class="language-cpp">//WinMain...
	dbERROR::Run()-&gt;~dbERROR();
	return (int)msg.wParam;
}
</code></pre>
<p>Jemand einen Vorschlag, wie man das lösen könnte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2007123</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2007123</guid><dc:creator><![CDATA[Meloen]]></dc:creator><pubDate>Sun, 16 Jan 2011 02:46:34 GMT</pubDate></item><item><title><![CDATA[Reply to Globales Ausgabesystem [Ideensuche] on Sun, 16 Jan 2011 09:34:26 GMT]]></title><description><![CDATA[<p>Die einfachste Lösung ist immer erstmal</p>
<pre><code class="language-cpp">Singleton* Singleton::GetInstance()
{
    static Singleton instance;
    return &amp;instance;
}
</code></pre>
<p>Das kannste eigentlich so benutzen bis du Probleme mit Multithreading hast.<br />
Zum eingentlich Problem. Was spricht dagegen einfach eine Exception zu werfen und die im Hauptfenster zu fangen und die Meldung anzuzeigen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2007166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2007166</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Sun, 16 Jan 2011 09:34:26 GMT</pubDate></item><item><title><![CDATA[Reply to Globales Ausgabesystem [Ideensuche] on Sun, 16 Jan 2011 10:37:24 GMT]]></title><description><![CDATA[<p>brotbernd schrieb:</p>
<blockquote>
<p>Zum eingentlich Problem. Was spricht dagegen einfach eine Exception zu werfen und die im Hauptfenster zu fangen und die Meldung anzuzeigen?</p>
</blockquote>
<p>Es handelt sich um eine Engine, also muss das, was der Benutzer selbst schreiben muss, sehr begrenzt sein. Exception-Handling sollte im Engine-Code geschehen und nicht vom User erwartet werden.</p>
<p>brotbernd schrieb:</p>
<blockquote>
<p>Die einfachste Lösung ist immer erstmal</p>
<pre><code class="language-cpp">Singleton* Singleton::GetInstance()
{
    static Singleton instance;
    return &amp;instance;
}
</code></pre>
</blockquote>
<p>Hm, damit habe ich auf jeden Fall das Problem mit dem Destruktoraufruf gelöst. Können da vielleicht Schwierigkeiten auftreten, wenn das so genutzt wird?</p>
<p>Erstmal danke für die Hilfe! Ich wäre sonst fast verzweifelt... :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2007194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2007194</guid><dc:creator><![CDATA[Meloen]]></dc:creator><pubDate>Sun, 16 Jan 2011 10:37:24 GMT</pubDate></item><item><title><![CDATA[Reply to Globales Ausgabesystem [Ideensuche] on Sun, 16 Jan 2011 10:48:08 GMT]]></title><description><![CDATA[<p>Ich mach das mit einem erweiterbaren Log:<br />
<a href="http://code.google.com/p/nightlighttv/source/browse/NightLight/trunk/NightLightDLL/NLLog.cpp" rel="nofollow">http://code.google.com/p/nightlighttv/source/browse/NightLight/trunk/NightLightDLL/NLLog.cpp</a><br />
<a href="http://code.google.com/p/nightlighttv/source/browse/NightLight/trunk/NightLightDLL/NLILogWriter.hpp" rel="nofollow">http://code.google.com/p/nightlighttv/source/browse/NightLight/trunk/NightLightDLL/NLILogWriter.hpp</a><br />
<a href="http://code.google.com/p/nightlighttv/source/browse/NightLight/trunk/NightLightDLL/NLTextWriter.cpp" rel="nofollow">http://code.google.com/p/nightlighttv/source/browse/NightLight/trunk/NightLightDLL/NLTextWriter.cpp</a><br />
<a href="http://code.google.com/p/nightlighttv/source/browse/NightLight/trunk/NightLightDLL/NLHtmlWriter.cpp" rel="nofollow">http://code.google.com/p/nightlighttv/source/browse/NightLight/trunk/NightLightDLL/NLHtmlWriter.cpp</a></p>
<p>Geht in HTML und normalem Text derzeit, je nachdem welchen Writer man verwendet.<br />
Man könnte das jetzt einfach darum erweitern, dass alle Log-Ausgaben auch im Spiel direkt ausgegeben werden, oder eine zusätzliche Konsole allokieren die das anzeigt, etc etc.<br />
Aber es funktioniert, für mich persönlich, ganz gut.<br />
(Ich nutze google-code nur um meinen Code zu sichern)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2007201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2007201</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Sun, 16 Jan 2011 10:48:08 GMT</pubDate></item></channel></rss>