<?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[Klassenmethode via Zeiger aufrufen]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich habe folgendes Problem.</p>
<p>Und zwar erzeugt eine 1.Klasse eine neue 2.Klasse die SDL verwendet.<br />
Die 2. Klasse besitzt eine AudioFill Routine die Ständig von SDL aufgerufen<br />
wird. Nun möchte ich in der AudioFill Routine der 2.Klasse über einen Zeiger eine Methode aus der 1.Klasse aufrufen. Ich hoffe ihr versteht was ich meine und könnt mir helfen. Die 2. Klasse soll auch nichts von der 1.Klasse sehen also via #include oder so.</p>
<p>MfG AndOne</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/289436/klassenmethode-via-zeiger-aufrufen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 18 Aug 2026 18:46:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/289436.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 04 Jul 2011 20:17:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klassenmethode via Zeiger aufrufen on Mon, 04 Jul 2011 20:17:41 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich habe folgendes Problem.</p>
<p>Und zwar erzeugt eine 1.Klasse eine neue 2.Klasse die SDL verwendet.<br />
Die 2. Klasse besitzt eine AudioFill Routine die Ständig von SDL aufgerufen<br />
wird. Nun möchte ich in der AudioFill Routine der 2.Klasse über einen Zeiger eine Methode aus der 1.Klasse aufrufen. Ich hoffe ihr versteht was ich meine und könnt mir helfen. Die 2. Klasse soll auch nichts von der 1.Klasse sehen also via #include oder so.</p>
<p>MfG AndOne</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2088859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2088859</guid><dc:creator><![CDATA[AndOne]]></dc:creator><pubDate>Mon, 04 Jul 2011 20:17:41 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenmethode via Zeiger aufrufen on Mon, 04 Jul 2011 20:26:55 GMT]]></title><description><![CDATA[<p>AndOne schrieb:</p>
<blockquote>
<p>Die 2. Klasse soll auch nichts von der 1.Klasse sehen also via #include oder so.</p>
</blockquote>
<p>Wenn du Methoden der 1. Klasse aufrufen willst, muss ihre Definition sichtbar sein, folglich musst du ihren Header inkludieren. Du kannst ihn aber erst in der .cpp-Datei einbinden. (Es sei denn du legst eine Abstraktionsschicht dazwischen, z.B. abstrakte Basisklasse oder Callback, aber das nur am Rande).</p>
<p>Übergib doch bei der Konstruktion des 2.-Klasse-Objekts einen Zeiger auf das Objekt der 1. Klasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2088865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2088865</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 04 Jul 2011 20:26:55 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenmethode via Zeiger aufrufen on Mon, 04 Jul 2011 20:31:55 GMT]]></title><description><![CDATA[<p>Danke für die schnelle Antwort.<br />
Genau das wollte ich eigtl. nicht. Die 2.Klasse stellt einen Player dar.<br />
Dieser soll komplett eigenständig laufen. Die 1. Klasse stellt die GUI dar.<br />
Die Player Klasse soll portierbar sein ohne Anpassungen. Das mit dem this übergeben funktioniert deshalb nicht. Ich wollte so was wie eine CALLBACK aber<br />
für Klassen. Ich möchte eine Wave Ausgabe via Grafik erstellen die in der 1. Klasse statt findet. Aber die Player Klasse soll auch ohne auskommen.</p>
<p>MfG AndOne</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2088866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2088866</guid><dc:creator><![CDATA[AndOne]]></dc:creator><pubDate>Mon, 04 Jul 2011 20:31:55 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenmethode via Zeiger aufrufen on Mon, 04 Jul 2011 20:40:51 GMT]]></title><description><![CDATA[<p>Muß der Player denn die GUI-Klasse kennen? Wenn nicht, reicht es aus, daß die GUI ein Player-Objekt hält und ihn über Methoden-Aufrufe steuert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2088871</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2088871</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 04 Jul 2011 20:40:51 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenmethode via Zeiger aufrufen on Mon, 04 Jul 2011 20:44:27 GMT]]></title><description><![CDATA[<p>Du kannst die GUI-Klasse wegabstrahieren.</p>
<p>Die Java-Variante (abstraktes Interface):</p>
<pre><code class="language-cpp">class Observer
{
    public:
        virtual ~Observer();
        virtual void Notify(int i) = 0;
};

class Gui : public Observer
{
    public:
        virtual void Notify(int i);
};

class Player
{
    public:
        Player(Observer&amp; obs) : obs(obs) {}
        void DoSomething() { obs.Notify(37); }
    private:
        Observer&amp; obs;
};

Gui g;
Player p(g);
p.DoSomething();
</code></pre>
<p>Die C++-Variante (Funktionsobjekt):</p>
<pre><code class="language-cpp">class Gui
{
    public:
        void Notify(int i);
};

class Player
{
    public:
        Player(std::function&lt;void(int)&gt; callback) : callback(callback) {}
        void DoSomething() { callback(37); }
    private:
        std::function&lt;void(int)&gt; callback;
};

Gui g;
Player p(std::bind(&amp;Gui::Notify, &amp;g, _1));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2088872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2088872</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 04 Jul 2011 20:44:27 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenmethode via Zeiger aufrufen on Mon, 04 Jul 2011 20:43:34 GMT]]></title><description><![CDATA[<p>So etwas lässt sich mit boost bind und function lösen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2088873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2088873</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Mon, 04 Jul 2011 20:43:34 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenmethode via Zeiger aufrufen on Mon, 04 Jul 2011 20:46:48 GMT]]></title><description><![CDATA[<p>Der Player soll die GUI nicht kennen.<br />
Die GUI hat aber ein Objekt der Playerklasse und kann diese steuern, eigtl. Logisch. Nur würde ich gerne dem Player eine Funktion der GUI übergeben die<br />
aus dem Soundpuffer ein Wave zeichnet. Der Player dudelt ja so vor sich hin<br />
und immer wenn der Soundpuffer &quot;refresht&quot; wird soll die &quot;GUI Zeichen&quot; Funktion<br />
angesprungen werden. Ich hoffe ihr versteht was ich meine. Oder habt ihr andere Ideen wie man so was machen könnte.</p>
<p>Mfg AndONe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2088876</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2088876</guid><dc:creator><![CDATA[AndOne]]></dc:creator><pubDate>Mon, 04 Jul 2011 20:46:48 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenmethode via Zeiger aufrufen on Mon, 04 Jul 2011 20:50:29 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12954">@Nexus</a> Das mit &quot;wegabstrahieren&quot; sieht nach dem aus was ich suche. ich werde es mal damit versuchen. Meld mich dann wieder.<br />
Erstmal vielen Dank für den Tip.</p>
<p>MfG Thorsten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2088877</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2088877</guid><dc:creator><![CDATA[AndOne]]></dc:creator><pubDate>Mon, 04 Jul 2011 20:50:29 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenmethode via Zeiger aufrufen on Mon, 04 Jul 2011 22:03:08 GMT]]></title><description><![CDATA[<p>Kann das sein das nicht jeder Compiler std::function kennt ?</p>
<pre><code class="language-cpp">#include &lt;functional&gt;
#include &lt;iostream&gt;
using namespace std;

std::function&lt;void(int)&gt; callback;
</code></pre>
<p>Fehlermeldung von MinGW 4.4:</p>
<p>playerclass.h:23: error: ISO C++ forbids declaration of 'function' with no type<br />
playerclass.h:23: error: invalid use of '::'<br />
playerclass.h:23: error: expected ';' before '&lt;' token</p>
<p>Naja, morgen gehts weiter ... Nachti<br />
Bestimmt hat noch einer von den Nachschwärmern ne Iddee <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>MfG AndOne</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2088902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2088902</guid><dc:creator><![CDATA[AndOne]]></dc:creator><pubDate>Mon, 04 Jul 2011 22:03:08 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenmethode via Zeiger aufrufen on Mon, 04 Jul 2011 22:08:20 GMT]]></title><description><![CDATA[<p>Kann durchaus sein, std::function ist afaik neu in C++0x, das ist noch nicht einmal offiziell verabschiedet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2088903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2088903</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 04 Jul 2011 22:08:20 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenmethode via Zeiger aufrufen on Mon, 04 Jul 2011 22:35:00 GMT]]></title><description><![CDATA[<p>Mit <code>-std=c++0x</code> versuchen, oder <code>std::tr1::function</code> oder <code>boost::function</code> verwenden. Für die zweite Möglichkeit brauchst du den Header <code>&lt;tr1/functional&gt;</code> und für die dritte die Boost-Bibliothek.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2088910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2088910</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 04 Jul 2011 22:35:00 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenmethode via Zeiger aufrufen on Tue, 05 Jul 2011 10:16:56 GMT]]></title><description><![CDATA[<p>Hab das mal kurz auf Arbeit mit &quot;tr1&quot; getestet. Nun Compiliert er es, alles andere<br />
probiere ich heute Abend zu Hause aus. Ich dank euch erst mal.</p>
<p>MfG Thorsten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089029</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089029</guid><dc:creator><![CDATA[AndOne]]></dc:creator><pubDate>Tue, 05 Jul 2011 10:16:56 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenmethode via Zeiger aufrufen on Tue, 05 Jul 2011 21:58:50 GMT]]></title><description><![CDATA[<p>Danke euch allen für die Hilfe, nun klappt das so wie ich mir das vorgestellt<br />
habe. Hier ein Link zu einem Video wo man sieht um was es ging.</p>
<p><a href="http://youtu.be/CGiZ9mxJnVs" rel="nofollow">http://youtu.be/CGiZ9mxJnVs</a></p>
<p>MfG AndOne</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089313</guid><dc:creator><![CDATA[AndOne]]></dc:creator><pubDate>Tue, 05 Jul 2011 21:58:50 GMT</pubDate></item></channel></rss>