<?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[Disjunkte Klassen]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich stehe gerade vor einem Problem.</p>
<p>Ich habe zwei Klassen die disjunkt sind und sozusagen nichts von einander wissen.</p>
<p>Die eine ist ein OpenGL Frame, die zweite ist Interaktion mit der Maus und Keyboard.</p>
<p>Ich möchte das beide sich untereinander verständigen, d.h wenn ich eine Maustaste drücke, soll Frame etwas ausgeben.</p>
<p>Wie macht man sowas ohne Querverweise?</p>
<p>Ist es überhaupt ein guter Stil?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/271723/disjunkte-klassen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 06:25:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/271723.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 02 Aug 2010 20:57:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Disjunkte Klassen on Mon, 02 Aug 2010 20:57:03 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich stehe gerade vor einem Problem.</p>
<p>Ich habe zwei Klassen die disjunkt sind und sozusagen nichts von einander wissen.</p>
<p>Die eine ist ein OpenGL Frame, die zweite ist Interaktion mit der Maus und Keyboard.</p>
<p>Ich möchte das beide sich untereinander verständigen, d.h wenn ich eine Maustaste drücke, soll Frame etwas ausgeben.</p>
<p>Wie macht man sowas ohne Querverweise?</p>
<p>Ist es überhaupt ein guter Stil?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1935342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935342</guid><dc:creator><![CDATA[konfus]]></dc:creator><pubDate>Mon, 02 Aug 2010 20:57:03 GMT</pubDate></item><item><title><![CDATA[Reply to Disjunkte Klassen on Mon, 02 Aug 2010 21:01:57 GMT]]></title><description><![CDATA[<p>Mein erster Gedanke ist eine Klasse die Frame und Interact beinhaltet und den beiden jeweils einen Zeiger auf das jeweilige Objekt setzt. Finde aber ein wenig.. naja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1935345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935345</guid><dc:creator><![CDATA[konfus]]></dc:creator><pubDate>Mon, 02 Aug 2010 21:01:57 GMT</pubDate></item><item><title><![CDATA[Reply to Disjunkte Klassen on Mon, 02 Aug 2010 21:25:42 GMT]]></title><description><![CDATA[<p>Ich würde eine Art Singleton-Controller machen. Da rein holste dir jenachdem einfach die Instanzen der beiden Klassen. Die Attribute die untereinander ausgetauscht werden müssen, würde ich per Getter- und Setter() machen, solange es noch in einem absehbaren Rahmen ist... Da einem die Mausklicks usw. per Callback mitgeteilt werden, würde ich mir an deiner Stelle vielleicht mal Boost::Signal anschauen.</p>
<p>Was auch noch eine Möglichkeit wäre, selbige Klasse herzunehmen und von beiden Anderen zu erben...</p>
<p>Ich weiß aber nicht was du mit Querverweise meinst, hoffentlich nicht das was ich vorgeschlagen habe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1935355</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935355</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Mon, 02 Aug 2010 21:25:42 GMT</pubDate></item><item><title><![CDATA[Reply to Disjunkte Klassen on Mon, 02 Aug 2010 21:34:47 GMT]]></title><description><![CDATA[<p>Wenn du es richtig super mit Zuckerguss haben möchtest, implementierst du ein <a href="http://en.wikipedia.org/wiki/Observer_pattern" rel="nofollow">Observer-Pattern</a>. Keine Angst vor dem zunächst kompliziert aussehenden Link, das Grundmodell ist recht einfach umzusetzen (siehe das C++-Beispiel).</p>
<p>edit: Und man sollte natürlich noch erwähnen, dass du nicht der erste wärst, der so etwas benötigt. Das heißt, wenn du nicht willst, musst du nicht selbst implementieren, wozu es schon zig Bibliotheken gibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1935359</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935359</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 02 Aug 2010 21:34:47 GMT</pubDate></item><item><title><![CDATA[Reply to Disjunkte Klassen on Mon, 02 Aug 2010 21:38:42 GMT]]></title><description><![CDATA[<p>Observer ist eine gute Möglichkeit.</p>
<p>Oft kann man sich auch darauf beschränken dass ein Observable (in deinem Fall die Input-Klasse) nur einen einzigen Observer &quot;kann&quot;. Das ist eine Spur einfacher und schneller zu implementieren.</p>
<p>Anderer, ähnlicher Vorschlag: Die Input-Klasse bekommt Setter-Funktionen, mit denen man z.B. für jeden Event einen Funktor (-&gt; boost::function&lt;&gt;) setzen kann.</p>
<p>Ich persönlich würde allerdings die Variante &quot;Observable&quot; vorziehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1935363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935363</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 02 Aug 2010 21:38:42 GMT</pubDate></item><item><title><![CDATA[Reply to Disjunkte Klassen on Mon, 02 Aug 2010 22:57:41 GMT]]></title><description><![CDATA[<p>Das könnte ungefähr so aussehen (mal schnell zusammenkopiert):</p>
<pre><code class="language-cpp">class MouseListener
{
public:
	virtual bool mouseMoved( const MouseEvent &amp;arg ) = 0;
	virtual bool mousePressed( const MouseEvent &amp;arg, MouseButtonID id ) = 0;
	virtual bool mouseReleased( const MouseEvent &amp;arg, MouseButtonID id ) = 0;
};

class KeyListener
{
public:
	virtual bool keyPressed( const KeyEvent &amp;arg ) = 0;
	virtual bool keyReleased( const KeyEvent &amp;arg ) = 0;		
};

// Der Einfachheit halber
class InputListener : public KeyListener, public MouseListener
{
};

class Game
{
public:
	void addInputListener( InputListener *l );
	void removeInputListener( InputListener *l );

private:
	SomeContainer&lt;InputListener *&gt; m_listeners;
	MyFrame *m_pFrame;
}
</code></pre>
<p>Die Interfaces Mouse- und KeyListener sind dazu da, die Benutzereingaben zu verarbeiten, die Klasse Game/Application hält alle &quot;globalen&quot; Variablen, also auch die für Input und das Fenster. Das funktionert jetzt so:<br />
- du überschreibst in InputListener die abstrakten Methoden und reagierst auf die Benutzereingaben<br />
- du fügst mittels Game::addInputListener neue Listener hinzu, etwa mittels m_listeners.append(l);<br />
- jedesmal, wenn du die Benutzereingaben erhälst (Fensterprozedur?), schickst du sie an <em>Game</em>. Dort werden sie an alle Input handler weitergegeben, die sich zuvor registriert haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1935387</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935387</guid><dc:creator><![CDATA[Phistomefel]]></dc:creator><pubDate>Mon, 02 Aug 2010 22:57:41 GMT</pubDate></item><item><title><![CDATA[Reply to Disjunkte Klassen on Tue, 03 Aug 2010 07:26:04 GMT]]></title><description><![CDATA[<p>Super!</p>
<p>Danke für eure Hilfe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1935456</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935456</guid><dc:creator><![CDATA[konfus]]></dc:creator><pubDate>Tue, 03 Aug 2010 07:26:04 GMT</pubDate></item></channel></rss>