<?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[Klasse in Klasse]]></title><description><![CDATA[<pre><code class="language-cpp">class Papa
{
    public:
        class Kind;

    public:
        Papa();
        virtual ~Papa();

    protected:
        char*   m_papaname;
};

class Papa::Kind
{
   public:
       Kind();
       virtual ~Kind();

       const char* MeinPapa() { return Papa::m_papaname; }
};
</code></pre>
<p>obiger Code führt zu einem Fehler?<br />
Wie mach ich es richtig, ohne m_papaname static zu machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/35614/klasse-in-klasse</link><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 05:44:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/35614.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 26 Mar 2003 01:07:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klasse in Klasse on Wed, 26 Mar 2003 01:07:00 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class Papa
{
    public:
        class Kind;

    public:
        Papa();
        virtual ~Papa();

    protected:
        char*   m_papaname;
};

class Papa::Kind
{
   public:
       Kind();
       virtual ~Kind();

       const char* MeinPapa() { return Papa::m_papaname; }
};
</code></pre>
<p>obiger Code führt zu einem Fehler?<br />
Wie mach ich es richtig, ohne m_papaname static zu machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/259993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/259993</guid><dc:creator><![CDATA[esskar]]></dc:creator><pubDate>Wed, 26 Mar 2003 01:07:00 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse in Klasse on Wed, 26 Mar 2003 01:28:00 GMT]]></title><description><![CDATA[<p>hmm...<br />
mir wurde gerade klar, warum es nicht gehen kann!<br />
Naja... <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>bis dann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/259994</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/259994</guid><dc:creator><![CDATA[esskar]]></dc:creator><pubDate>Wed, 26 Mar 2003 01:28:00 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse in Klasse on Wed, 26 Mar 2003 09:01:00 GMT]]></title><description><![CDATA[<p>was du willst, ist vererbung oder layering<br />
das hast du aber nicht modelliert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/259995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/259995</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Wed, 26 Mar 2003 09:01:00 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse in Klasse on Wed, 26 Mar 2003 14:51:00 GMT]]></title><description><![CDATA[<p>Naja, weiß ja nicht was er will, aber der Code versucht das was ich öfter will und was in C++ leider nicht geht, bzw. nur über hässliche Umwege.<br />
*neidisch-zu-java-guck*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/259996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/259996</guid><dc:creator><![CDATA[DrGreenthumb]]></dc:creator><pubDate>Wed, 26 Mar 2003 14:51:00 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse in Klasse on Wed, 26 Mar 2003 14:56:00 GMT]]></title><description><![CDATA[<p>Was geht in Java, was in C++ nicht geht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/259997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/259997</guid><dc:creator><![CDATA[RenéG]]></dc:creator><pubDate>Wed, 26 Mar 2003 14:56:00 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse in Klasse on Wed, 26 Mar 2003 15:06:00 GMT]]></title><description><![CDATA[<p>das was esskar da versucht hat.</p>
<p>class A {<br />
int x;<br />
class B { B() { x = 10; } };<br />
};</p>
<p>In C++ ist B aber eine eigene Klasse die extra instanziert werden muss, bzw. ein Objekt von A bräuchte um dessen Inhalt zu bearbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/259998</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/259998</guid><dc:creator><![CDATA[DrGreenthumb]]></dc:creator><pubDate>Wed, 26 Mar 2003 15:06:00 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse in Klasse on Thu, 27 Mar 2003 07:50:00 GMT]]></title><description><![CDATA[<p>DrGreenthumb:<br />
wie nennt sich so eine Beziehung?</p>
<p>was passiert bei:</p>
<pre><code class="language-cpp">class Base
{
protected:
  int x;
public:
  class Child
  {
  public:
    void set(int y) { x=y; } //zugriff auf private??
  };
};

class Derived : public Base::Child
{
};

...
Derived d;
d.set(5); //geht das?
</code></pre>
<p>/me versteht den Sinn nicht <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="😞"
    /><br />
erklär mal bitte</p>
]]></description><link>https://www.c-plusplus.net/forum/post/259999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/259999</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Thu, 27 Mar 2003 07:50:00 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse in Klasse on Thu, 27 Mar 2003 10:10:00 GMT]]></title><description><![CDATA[<p>Folgendes Konstrukt</p>
<pre><code class="language-cpp">class Papa
{
    public:
        class Kind;

    public:
        Papa();
        virtual ~Papa();

    protected:
        char*   m_papaname;
};
</code></pre>
<p>ist keine Parent-&gt;Child-Beziehung, sondern eine Outer-&gt;Inner-Beziehung.</p>
<p>Wie löst man das in C++?<br />
Man definiert sich 2 Makros:</p>
<pre><code class="language-cpp">#define BEGIN_INNER_CLASS(classOuter, classInner) \
  class classInner; \
  friend class classInner; \
  class classInner
  { \
  private: \
    classOuter* This() \
    { return (classOuter*)((BYTE*)this - offsetof(classOuter, m_##classInner)); } \
public:

#define END_INNER_CLASS(classInner) } m_##classInner;
</code></pre>
<p>Jetzt sieht obiges Konstrukt so aus:</p>
<pre><code class="language-cpp">class Papa
{
public:
  BEGIN_INNER_CLASS( Papa, Kind)
    const char* MeinPapa() { return This()-&gt;m_papaname; }
  END_INNER_CLASS( Kind)
protected:
  char* m_papaname;
};
</code></pre>
<p>Allerdings ist das für eine Papa-Kind-Beziehung nicht zu gebrauchen, weil es eine 1:1 Beziehung darstellt, und keine 1:N-Beziehung, wie es bei Papa-Kind der Fall sein müsste.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/260000</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/260000</guid><dc:creator><![CDATA[RenéG]]></dc:creator><pubDate>Thu, 27 Mar 2003 10:10:00 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse in Klasse on Thu, 27 Mar 2003 15:25:00 GMT]]></title><description><![CDATA[<blockquote>
<p>/me versteht den Sinn nicht<br />
erklär mal bitte</p>
</blockquote>
<p>Beispielsweise könnte eine Ereignisbehandlung so aussehen:</p>
<pre><code class="language-cpp">class Fenster {
  int x;
  Button b1;

  class b1_handler : public ButtonHandler {
    void onClick() {
      ++x;
    }
  }

  Fenster() {
    b1.setHandler( new b1_handler() );
  }
};
</code></pre>
<p>Ähnlich haben die das bei Java gemacht.</p>
<p>[ Dieser Beitrag wurde am 27.03.2003 um 16:42 Uhr von <strong>DrGreenthumb</strong> editiert. ]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/260001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/260001</guid><dc:creator><![CDATA[DrGreenthumb]]></dc:creator><pubDate>Thu, 27 Mar 2003 15:25:00 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse in Klasse on Mon, 04 Jul 2011 23:42:52 GMT]]></title><description><![CDATA[<p>Hallo,<br />
Hab leider keinen passenden Thread zu meiner Frage gefunden. Dieser schien mir noch am passendsten. Also ich hätte gerne folgendes konstrukt, was leider zu einem fehler führt:</p>
<pre><code class="language-cpp">class huhn{
public:
  ei foo;
};

class ei{
public:
  huhn *bar;
};
</code></pre>
<p>Hat jemand eine Idee wie man das elegant lösen kann (und der compiler trotzdem weiss ob das hihn oder das ei zuerst da war?)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2088924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2088924</guid><dc:creator><![CDATA[backlunt]]></dc:creator><pubDate>Mon, 04 Jul 2011 23:42:52 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse in Klasse on Tue, 05 Jul 2011 00:12:40 GMT]]></title><description><![CDATA[<p>forward-declaration</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2088926</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2088926</guid><dc:creator><![CDATA[jhkhjk]]></dc:creator><pubDate>Tue, 05 Jul 2011 00:12:40 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse in Klasse on Tue, 05 Jul 2011 00:30:42 GMT]]></title><description><![CDATA[<p>Danke, für die Antwort. Komischerweise kompiliert folgender code immer noch nicht (bzw nur wenn ich foo als pointer deklariere)</p>
<pre><code class="language-cpp">class b;

class a{
public:
  b foo;
};

class b{
public:
  a* bar;
};

int main(){

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2088927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2088927</guid><dc:creator><![CDATA[backlunt]]></dc:creator><pubDate>Tue, 05 Jul 2011 00:30:42 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse in Klasse on Tue, 05 Jul 2011 00:40:50 GMT]]></title><description><![CDATA[<p>Problem gelöst, danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2088928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2088928</guid><dc:creator><![CDATA[backlunt]]></dc:creator><pubDate>Tue, 05 Jul 2011 00:40:50 GMT</pubDate></item></channel></rss>