<?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[Bitte durch treffenden Titel ersetzen, kanns nur beschreiben]]></title><description><![CDATA[<p>Also ich steh grad auf dem Schlauch, folgende Sache</p>
<p>Ich habe eine Klasse A, welche ein Objekt der Klasse B enthält</p>
<pre><code class="language-cpp">class A
{
public:
    B b;
    void init();
    void doSomething();
};

class B
{
    werkelVorDichHer();
}
</code></pre>
<p>In der init-Funktion wird b.werkelVorDichHer() aufgerufen.<br />
Diese Funktion wartet dann auf ein SIgnal worauf<br />
a.doSomething()<br />
aufgerufen werden soll.</p>
<p>Nur hab ich keine Ahnung wie ein Element in einer Klasse eine Funktion der überliegenden aufrufen könnte.</p>
<p>Vielleicht übersehe ich einen anderen Weg aber vlt gibts ja hier eine Lösung</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/261376/bitte-durch-treffenden-titel-ersetzen-kanns-nur-beschreiben</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 08:23:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/261376.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 17 Feb 2010 16:33:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bitte durch treffenden Titel ersetzen, kanns nur beschreiben on Wed, 17 Feb 2010 16:33:09 GMT]]></title><description><![CDATA[<p>Also ich steh grad auf dem Schlauch, folgende Sache</p>
<p>Ich habe eine Klasse A, welche ein Objekt der Klasse B enthält</p>
<pre><code class="language-cpp">class A
{
public:
    B b;
    void init();
    void doSomething();
};

class B
{
    werkelVorDichHer();
}
</code></pre>
<p>In der init-Funktion wird b.werkelVorDichHer() aufgerufen.<br />
Diese Funktion wartet dann auf ein SIgnal worauf<br />
a.doSomething()<br />
aufgerufen werden soll.</p>
<p>Nur hab ich keine Ahnung wie ein Element in einer Klasse eine Funktion der überliegenden aufrufen könnte.</p>
<p>Vielleicht übersehe ich einen anderen Weg aber vlt gibts ja hier eine Lösung</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857196</guid><dc:creator><![CDATA[shisha]]></dc:creator><pubDate>Wed, 17 Feb 2010 16:33:09 GMT</pubDate></item><item><title><![CDATA[Reply to Bitte durch treffenden Titel ersetzen, kanns nur beschreiben on Wed, 17 Feb 2010 16:39:10 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class B;
class A
{
public:
    B b;
    void init() // implementierung in die .cpp, wo dann das andere file included wird
    {
      b.werkelVorDichHer ( *this );
    }
    void doSomething();
};

class A;
class B
{
    werkelVorDichHer(A&amp; caller);
}
</code></pre>
<p>Da brauchst du wahrscheinlich Vorwärtsdeklarationen der Klassen.</p>
<p>btw:<br />
Eine solche öffentliche Init Funktion ist eine schlechte Idee. Benutz den Konstruktor, um Initialisierungsdinge zu machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857200</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857200</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 17 Feb 2010 16:39:10 GMT</pubDate></item><item><title><![CDATA[Reply to Bitte durch treffenden Titel ersetzen, kanns nur beschreiben on Wed, 17 Feb 2010 16:42:53 GMT]]></title><description><![CDATA[<p>Du musst die Sache in Header- und Source-Files aufteilen:</p>
<pre><code class="language-cpp">// B.hpp

#ifndef H_B_INCLUDE_GUARD_2342324342
#define H_B_INCLUDE_GUARD_2342324342

class B
{
public:
  void doB();
}

#endif // H_B_INCLUDE_GUARD_2342324342

// B.cpp

#include &quot;B.hpp&quot;

void B::doB()
{
  // ...
}

// A.hpp

#ifndef H_A_INCLUDE_GUARD_70970980877
#define H_A_INCLUDE_GUARD_70970980877

#include &quot;B.hpp&quot;

class A
{
  B b;

public:
  A();

  void doA();
};

#endif // H_A_INCLUDE_GUARD_70970980877

// A.cpp

#include &quot;A.hpp&quot;

A::A()
{
  b.doB();
  doA();
}

void A::doA()
{
}
</code></pre>
<ol>
<li><code>init</code> Funktionen braucht man in C++ grundsätzlich nicht, dafür gibt es Konstruktoren.<br />
2. Include Guards ist ein wichtiges Stichwort bei einer solchen Aufteilung!<br />
3. Ein paar weiterführende Links:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39498.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-39498.html</a><br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39477.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-39477.html</a><br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39467.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-39467.html</a><br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-61231.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-61231.html</a></li>
</ol>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857202</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 17 Feb 2010 16:42:53 GMT</pubDate></item><item><title><![CDATA[Reply to Bitte durch treffenden Titel ersetzen, kanns nur beschreiben on Wed, 17 Feb 2010 16:43:44 GMT]]></title><description><![CDATA[<p>vorwärtdeklaration hab ich eh schon,<br />
nur die klasse B stammt nicht aus meiner Feder, so dass ich die eigentlich nicht bearbeiten kann oder besser sollte</p>
<p>Das wäre eigentlich nur der letzte ausweg</p>
<p>dieses beispiel mit a und b ist natürlich nicht der realität entsprechend, also ich hab der einfachkeit halber mal alles als public geschrieben</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857204</guid><dc:creator><![CDATA[shisha]]></dc:creator><pubDate>Wed, 17 Feb 2010 16:43:44 GMT</pubDate></item><item><title><![CDATA[Reply to Bitte durch treffenden Titel ersetzen, kanns nur beschreiben on Wed, 17 Feb 2010 16:47:01 GMT]]></title><description><![CDATA[<p>bevor jetzt noch solche meldungen kommen:<br />
NICHT auf den inhalt von a und b achten ^^</p>
<p>Diese Klassen gibt es so nicht<br />
Nur habe ich versucht das Problem der Kommunikation so deutlich wie möglich zu machen, auch der Inhalt der Funktionen ist nicht von Belang</p>
<p>Im realen Projekt sind Include_Guards und Konstruktoren definiert, alles kein Problem ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857206</guid><dc:creator><![CDATA[shisha]]></dc:creator><pubDate>Wed, 17 Feb 2010 16:47:01 GMT</pubDate></item><item><title><![CDATA[Reply to Bitte durch treffenden Titel ersetzen, kanns nur beschreiben on Wed, 17 Feb 2010 16:48:27 GMT]]></title><description><![CDATA[<p>Habe ich deine Frage etwa falsch verstanden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857207</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857207</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 17 Feb 2010 16:48:27 GMT</pubDate></item><item><title><![CDATA[Reply to Bitte durch treffenden Titel ersetzen, kanns nur beschreiben on Wed, 17 Feb 2010 16:52:56 GMT]]></title><description><![CDATA[<p>nein, deine antwort ist in etwa das was ich erwartet habe ( nur dass ich lieber zeiger statt referenzen verwende^^)</p>
<p>Auch die Funktionsnamen wie init sind frei erfunden.</p>
<p>Gibts ausser dieser Möglichkeit noch irgendeine wobei ich B nicht verändern müsste?</p>
<p>@ Drakon:<br />
Ich will nur sicherstellen dass ich in diesem Thread nicht nach meiner Antwort suchen muss weil 200 Seiten Fehler am Beispiel bemängelt werden<br />
wie Sourcecode aufteile, Include_Guards, hey Klasse B ist nicht mit Semikolon beendet^^</p>
<p>@ Dravere:<br />
ist nicht böse gemeint du hast ja recht, ich hätte vlt gleich schreiben sollen dass das nur ein Beispiel ist um das Problem mit minimalem Kontext widerzugeben</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857209</guid><dc:creator><![CDATA[shisha]]></dc:creator><pubDate>Wed, 17 Feb 2010 16:52:56 GMT</pubDate></item><item><title><![CDATA[Reply to Bitte durch treffenden Titel ersetzen, kanns nur beschreiben on Wed, 17 Feb 2010 17:04:44 GMT]]></title><description><![CDATA[<p>Ich verstehe nur Bahnhof. Das sollte keine Korrektur darstellen, sondern die Lösung. Was ist denn dann deine Frage? Oder was ist das Problem? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857211</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 17 Feb 2010 17:04:44 GMT</pubDate></item><item><title><![CDATA[Reply to Bitte durch treffenden Titel ersetzen, kanns nur beschreiben on Wed, 17 Feb 2010 17:18:12 GMT]]></title><description><![CDATA[<p>Er will, dass A ein Objekt hält, dieses gehaltene Objekt aber eine Funktion von A aufrufen soll. Das geht, indem man eine Referenz an das B Objekt mitgibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857215</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 17 Feb 2010 17:18:12 GMT</pubDate></item><item><title><![CDATA[Reply to Bitte durch treffenden Titel ersetzen, kanns nur beschreiben on Wed, 17 Feb 2010 17:22:58 GMT]]></title><description><![CDATA[<p>ok, das Problem ist sogut wie gelöst, nur hab ich noch ein kleines Problem,<br />
für eine weitere Vorwärtsdeklaration brauch ich eine Klasse die im Namespace ns steckt.</p>
<pre><code class="language-cpp">namespace ns
{
    class C
    {
        tolle Sachen ...
    };
}
</code></pre>
<p>Das ist jetzt eig mehr als peinlich, aber ich bin grad fix und fertig</p>
<p>wie drücke ich aus dass die Klasse im namespace ist?!</p>
<p>ich habe bisher:</p>
<pre><code class="language-cpp">class C;

class D
{
    wiederWasLustiges(C* caller);
}
</code></pre>
<p>Verständlicherweise?! regt er sich nun auf dass er keinen Prototyp für</p>
<p>wiederWasLustiges(ns::C* caller)</p>
<p>findet.</p>
<p>schreibe ich aber vor class C noch<br />
namespace ns,<br />
so regt er sich auf dass ns kein namespace wäre</p>
<p>Ich möchte aber unter gar keinen Umständen<br />
die Headerdatei mit der Klasse C und dem Namespace im Header von D inkludieren.</p>
<p>Wenn ich das hinter mir habe hör ich für heute auf ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857220</guid><dc:creator><![CDATA[shisha]]></dc:creator><pubDate>Wed, 17 Feb 2010 17:22:58 GMT</pubDate></item><item><title><![CDATA[Reply to Bitte durch treffenden Titel ersetzen, kanns nur beschreiben on Wed, 17 Feb 2010 17:25:54 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">namespace ns
{
  class C;
}

class D
{
    wiederWasLustiges(C* caller);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1857223</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857223</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 17 Feb 2010 17:25:54 GMT</pubDate></item><item><title><![CDATA[Reply to Bitte durch treffenden Titel ersetzen, kanns nur beschreiben on Wed, 17 Feb 2010 17:47:31 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Er will, dass A ein Objekt hält, dieses gehaltene Objekt aber eine Funktion von A aufrufen soll. Das geht, indem man eine Referenz an das B Objekt mitgibt.</p>
</blockquote>
<p>Ehm, ok. Ich hatte heute Nachmittag keinen Kaffee, vielleicht liegt es daran, dass ich das nicht begriffen 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>
<p>@shisha,<br />
Mit dem letzten Beitrag von drakon sollte jetzt alles geklärt sein, oder?</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857234</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 17 Feb 2010 17:47:31 GMT</pubDate></item><item><title><![CDATA[Reply to Bitte durch treffenden Titel ersetzen, kanns nur beschreiben on Wed, 17 Feb 2010 18:33:34 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>drakon schrieb:</p>
<blockquote>
<p>Er will, dass A ein Objekt hält, dieses gehaltene Objekt aber eine Funktion von A aufrufen soll. Das geht, indem man eine Referenz an das B Objekt mitgibt.</p>
</blockquote>
<p>Ehm, ok. Ich hatte heute Nachmittag keinen Kaffee, vielleicht liegt es daran, dass ich das nicht begriffen 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>
</blockquote>
<p>Ich dachte, wegen deinem Post, dass ich etwas falsch verstanden hatte, da du überhaupt nichts in der Art, wie ich hattest. <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/1857253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857253</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 17 Feb 2010 18:33:34 GMT</pubDate></item></channel></rss>