<?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[SIGNAL &amp;amp; SLOT Marke Eigenbau]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich hab mal versucht sie das SIGNAL-SLOT-Prinzip, welches aus Qt etc. bekannt seinen müsste, mit einfachen Mitteln nachzubauen:</p>
<pre><code class="language-cpp">// XXX.hpp
#pragma once

#include &lt;iostream&gt;

class Main;

class BASE
{
public:
	void operator()(int i)
	{
		Main::foo(i);    //  oder so ähnlich
	}
};

typedef BASE	SLOT;
typedef BASE&amp;	SIGNAL;

class Make
{
public:
	Make(SIGNAL SI)	:	signal(SI)	{}
	SIGNAL signal;
};

class Main
{
public:
	SLOT slot;
	void foo(int i)
	{
		std::cout&lt;&lt;&quot;SIGNAL WORKS &quot;&lt;&lt;i&lt;&lt;std::endl;
	}
};

// main.cpp
#include &quot;XXX.hpp&quot;

int main()
{
	Main x;
	Make y(x.slot);

	y.signal(42);

	system(&quot;pause&quot;);
}
</code></pre>
<p>Hab jetzt aber irgendwie ne Denkblockade oder es geht doch nicht so wie ich mir das gedacht habe. :p</p>
<p>Kann mir jemand helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/275080/signal-amp-slot-marke-eigenbau</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 02:43:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/275080.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 08 Oct 2010 17:12:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to SIGNAL &amp;amp; SLOT Marke Eigenbau on Fri, 08 Oct 2010 17:12:59 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich hab mal versucht sie das SIGNAL-SLOT-Prinzip, welches aus Qt etc. bekannt seinen müsste, mit einfachen Mitteln nachzubauen:</p>
<pre><code class="language-cpp">// XXX.hpp
#pragma once

#include &lt;iostream&gt;

class Main;

class BASE
{
public:
	void operator()(int i)
	{
		Main::foo(i);    //  oder so ähnlich
	}
};

typedef BASE	SLOT;
typedef BASE&amp;	SIGNAL;

class Make
{
public:
	Make(SIGNAL SI)	:	signal(SI)	{}
	SIGNAL signal;
};

class Main
{
public:
	SLOT slot;
	void foo(int i)
	{
		std::cout&lt;&lt;&quot;SIGNAL WORKS &quot;&lt;&lt;i&lt;&lt;std::endl;
	}
};

// main.cpp
#include &quot;XXX.hpp&quot;

int main()
{
	Main x;
	Make y(x.slot);

	y.signal(42);

	system(&quot;pause&quot;);
}
</code></pre>
<p>Hab jetzt aber irgendwie ne Denkblockade oder es geht doch nicht so wie ich mir das gedacht habe. :p</p>
<p>Kann mir jemand helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1963004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1963004</guid><dc:creator><![CDATA[NEO.PIXEL]]></dc:creator><pubDate>Fri, 08 Oct 2010 17:12:59 GMT</pubDate></item><item><title><![CDATA[Reply to SIGNAL &amp;amp; SLOT Marke Eigenbau on Fri, 08 Oct 2010 17:45:32 GMT]]></title><description><![CDATA[<p>Qt wandelt den Quelltext in moc Dateien um also in ein für den Compiler lesbaren Code um den man auch selber mit dem Editor öffnen kann. Sowas wie du gemacht hast macht Qt nicht aber trotzdem gute Idee.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1963018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1963018</guid><dc:creator><![CDATA[CCodex]]></dc:creator><pubDate>Fri, 08 Oct 2010 17:45:32 GMT</pubDate></item><item><title><![CDATA[Reply to SIGNAL &amp;amp; SLOT Marke Eigenbau on Fri, 08 Oct 2010 17:53:46 GMT]]></title><description><![CDATA[<p>Das die das bei Qt nich so machen hab ich mir gedacht.. Wäre ja auch zu einfach <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>Ich kriegs aber immer noch nicht zum laufen.. Was mach ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1963022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1963022</guid><dc:creator><![CDATA[NEO.PIXEL]]></dc:creator><pubDate>Fri, 08 Oct 2010 17:53:46 GMT</pubDate></item><item><title><![CDATA[Reply to SIGNAL &amp;amp; SLOT Marke Eigenbau on Fri, 08 Oct 2010 18:02:49 GMT]]></title><description><![CDATA[<p>Welche fehlermeldung kommt?<br />
Geh mal mit dem Debugger drüber.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1963026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1963026</guid><dc:creator><![CDATA[CCodex]]></dc:creator><pubDate>Fri, 08 Oct 2010 18:02:49 GMT</pubDate></item><item><title><![CDATA[Reply to SIGNAL &amp;amp; SLOT Marke Eigenbau on Fri, 08 Oct 2010 18:20:51 GMT]]></title><description><![CDATA[<p><strong>Compiler sagt:</strong></p>
<pre><code>1&gt;c:\dokumente und einstellungen\besitzer\eigene dateien\visual studio 2008\projects\XXX\XXX\XXX.hpp(12) : error C2027: Verwendung des undefinierten Typs &quot;Main&quot;
1&gt;c:\dokumente und einstellungen\besitzer\eigene dateien\visual studio 2008\projects\XXX\XXX\XXX.hpp(12) : error C3861: &quot;foo&quot;: Bezeichner wurde nicht gefunden.
</code></pre>
<p>Beide Fehler in Zeile 13.</p>
<p>Aber kp warum.. Ich verweise doch aus Main..?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1963037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1963037</guid><dc:creator><![CDATA[NEO.PIXEL]]></dc:creator><pubDate>Fri, 08 Oct 2010 18:20:51 GMT</pubDate></item><item><title><![CDATA[Reply to SIGNAL &amp;amp; SLOT Marke Eigenbau on Fri, 08 Oct 2010 18:28:44 GMT]]></title><description><![CDATA[<p>In Zeile 12 kann der Compiler noch nicht wissen, dass die Klasse Main mal eine Funktion foo haben wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1963040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1963040</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Fri, 08 Oct 2010 18:28:44 GMT</pubDate></item><item><title><![CDATA[Reply to SIGNAL &amp;amp; SLOT Marke Eigenbau on Fri, 08 Oct 2010 19:56:56 GMT]]></title><description><![CDATA[<p>Wie kann ich ihm das denn sagen?</p>
<p>Ich steh grad irgendwie aufm Schlauch <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/1963085</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1963085</guid><dc:creator><![CDATA[NEO.PIXEL]]></dc:creator><pubDate>Fri, 08 Oct 2010 19:56:56 GMT</pubDate></item><item><title><![CDATA[Reply to SIGNAL &amp;amp; SLOT Marke Eigenbau on Fri, 08 Oct 2010 20:03:47 GMT]]></title><description><![CDATA[<p>Trenne Memberdeklaration von Memberdefinition. Sprich: Teil die Klasse auf in Header und Implementierungsdatei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1963091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1963091</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Fri, 08 Oct 2010 20:03:47 GMT</pubDate></item><item><title><![CDATA[Reply to SIGNAL &amp;amp; SLOT Marke Eigenbau on Sun, 10 Oct 2010 12:17:21 GMT]]></title><description><![CDATA[<p>Danke jetzt funktionierts.. <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>
<p>Aber auch nur wenn ich foo() als static deklariere..<br />
Geht das noch anders? Ich hätte gerne, dass in das aktuelle Objekt von Main engegriffen wird..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1963491</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1963491</guid><dc:creator><![CDATA[NEO.PIXEL]]></dc:creator><pubDate>Sun, 10 Oct 2010 12:17:21 GMT</pubDate></item><item><title><![CDATA[Reply to SIGNAL &amp;amp; SLOT Marke Eigenbau on Sun, 10 Oct 2010 12:19:59 GMT]]></title><description><![CDATA[<p>Du solltest wissen, was du tust, und nicht einfach ausprobieren. <code>static</code> setzt man nicht hin, &quot;damit es funktioniert&quot;, sondern weil man damit eine bestimmte Semantik erreichen möchte.</p>
<p>Michael E. hat ja schon gesagt, was du tun sollst. Die Trennung von Header und Implementierungsdatei sollte auch in jedem Anfängerbuch erläutert sein. Ausserdem wirst du im Internet massenhaft Erklärungen dazu finden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1963493</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1963493</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 10 Oct 2010 12:19:59 GMT</pubDate></item><item><title><![CDATA[Reply to SIGNAL &amp;amp; SLOT Marke Eigenbau on Sun, 10 Oct 2010 12:43:52 GMT]]></title><description><![CDATA[<p>Mir ist sehr wohl bekannt was man mit einem static bezweckt.. Aber ohne geht es nicht, auch nicht durch die Trennung in Header und<br />
Implementierungsdatei:</p>
<pre><code>1&gt;c:\dokumente und einstellungen\...\signal.cpp(12) : error C2352: 'Main::foo': Unzulässiger Aufruf einer nicht statischen Memberfunktion
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1963497</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1963497</guid><dc:creator><![CDATA[NEO.PIXEL]]></dc:creator><pubDate>Sun, 10 Oct 2010 12:43:52 GMT</pubDate></item><item><title><![CDATA[Reply to SIGNAL &amp;amp; SLOT Marke Eigenbau on Sun, 10 Oct 2010 12:48:06 GMT]]></title><description><![CDATA[<p>NEO.PIXEL schrieb:</p>
<blockquote>
<p>Mir ist sehr wohl bekannt was man mit einem static bezweckt..</p>
</blockquote>
<p>Dann wüsstest du aber, dass man zum Aufruf einer nicht-statischen Memberfunktion ein Objekt benötigt. Das hast du bei <code>Main::foo()</code> nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1963498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1963498</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 10 Oct 2010 12:48:06 GMT</pubDate></item><item><title><![CDATA[Reply to SIGNAL &amp;amp; SLOT Marke Eigenbau on Sun, 10 Oct 2010 13:00:08 GMT]]></title><description><![CDATA[<p>Das weiß ich wohl, aber dazu müsste ich x global anlegen und das hatte ich so eigentlich nicht geplant..<br />
Oder komme ich noch irgendwie anders an das Objekt ran??</p>
<p>Ich bin verwirrt <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/1963502</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1963502</guid><dc:creator><![CDATA[NEO.PIXEL]]></dc:creator><pubDate>Sun, 10 Oct 2010 13:00:08 GMT</pubDate></item><item><title><![CDATA[Reply to SIGNAL &amp;amp; SLOT Marke Eigenbau on Sun, 10 Oct 2010 13:11:50 GMT]]></title><description><![CDATA[<p>Das Objekt kannst du ja an <code>BASE</code> im Konstruktor übergeben und dann speichern (evtl. als Zeiger/Referenz).</p>
<p>Übrigens: Zu Signal-Slot-Systemen könntest du dir auch <code>boost::function</code> und <code>boost::signals</code> anschauen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1963508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1963508</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 10 Oct 2010 13:11:50 GMT</pubDate></item><item><title><![CDATA[Reply to SIGNAL &amp;amp; SLOT Marke Eigenbau on Sun, 10 Oct 2010 13:22:25 GMT]]></title><description><![CDATA[<p>So könnte is gehen <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>
<p>Dann probier ich mal und lass von mir höre wenns läuft..</p>
<p>Danke für die 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/1963513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1963513</guid><dc:creator><![CDATA[NEO.PIXEL]]></dc:creator><pubDate>Sun, 10 Oct 2010 13:22:25 GMT</pubDate></item><item><title><![CDATA[Reply to SIGNAL &amp;amp; SLOT Marke Eigenbau on Wed, 03 Nov 2010 17:07:26 GMT]]></title><description><![CDATA[<p>So.. Wie angedroht wollte ich mich ja melden wenns läuft: <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>
<pre><code class="language-cpp">// signal.hpp
#pragma once

#include &lt;iostream&gt;

class Main;

class BASE
{
    typedef Main&amp; SLOTCLASS
	SLOTCLASS sltc;
public:
	BASE(SLOTCLASS sc)	:	sltc(sc)	{}
	void operator()(int i);
};

typedef BASE	SLOT;
typedef BASE&amp;	SIGNAL;

class Make
{
public:
	Make(SIGNAL SI)	:	signal(SI)	{}
	SIGNAL signal;
};

class Main
{
	int x;
public:
	Main(void)	:	slot(*this), x(7)	{}
	SLOT slot;
	void foo(int i)
	{
		x += i;
		std::cout&lt;&lt;&quot;SIGNAL WORKS &quot;&lt;&lt;x&lt;&lt;std::endl;
	}
};

// signal.cpp

void BASE::operator ()(int i)
{
	main.foo(i);
}

// main.cpp
#include &quot;signal.hpp&quot;

int main()
{
	Main x;

	Make y(x.slot);

	y.signal(35);

	system(&quot;pause&quot;);
}
</code></pre>
<p>Fänd es jetzt aber noch schön für BASE ein Template zu haben, um Zeile 10 allgemeiner gestallten zu können.. Ist das irgendwie möglich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1964050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1964050</guid><dc:creator><![CDATA[NEO.PIXEL]]></dc:creator><pubDate>Wed, 03 Nov 2010 17:07:26 GMT</pubDate></item></channel></rss>