<?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[frage zur forward-deklaration]]></title><description><![CDATA[<p>hi,</p>
<p>ich glaub mir fehlt grad ne gehirnwindung... wieso funktioniert folgendes nicht? ich habe doch extra ne forward-deklaration gemacht um A in B bekannt zu machen. wieso bekomme ich dann als fehler das A undefiniert ist?</p>
<pre><code class="language-cpp">class C
{
};

class A;

class B
{
  public:

    B&amp; operator = (const C &amp;rhs) { A a; a(rhs, *this); return *this; }
};

class A
{
  public:

    void operator () (const C &amp;lhs, B &amp;rhs)
    {
    }
};
</code></pre>
<p>folgendes dagegen funktioniert natürlich, da der operator erst nach der klasse a implementiert wird:</p>
<pre><code class="language-cpp">class C
{
};

class B
{
  public:

    B&amp; operator = (const C &amp;rhs);
};

class A
{
  public:

    void operator () (const C &amp;lhs, B &amp;rhs)
    {
    } 
};

B&amp; B::operator = (const C &amp;rhs) { A a; a(rhs, *this); return *this; }
</code></pre>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/127324/frage-zur-forward-deklaration</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 01:14:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/127324.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 23 Nov 2005 11:28:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to frage zur forward-deklaration on Wed, 23 Nov 2005 11:28:39 GMT]]></title><description><![CDATA[<p>hi,</p>
<p>ich glaub mir fehlt grad ne gehirnwindung... wieso funktioniert folgendes nicht? ich habe doch extra ne forward-deklaration gemacht um A in B bekannt zu machen. wieso bekomme ich dann als fehler das A undefiniert ist?</p>
<pre><code class="language-cpp">class C
{
};

class A;

class B
{
  public:

    B&amp; operator = (const C &amp;rhs) { A a; a(rhs, *this); return *this; }
};

class A
{
  public:

    void operator () (const C &amp;lhs, B &amp;rhs)
    {
    }
};
</code></pre>
<p>folgendes dagegen funktioniert natürlich, da der operator erst nach der klasse a implementiert wird:</p>
<pre><code class="language-cpp">class C
{
};

class B
{
  public:

    B&amp; operator = (const C &amp;rhs);
};

class A
{
  public:

    void operator () (const C &amp;lhs, B &amp;rhs)
    {
    } 
};

B&amp; B::operator = (const C &amp;rhs) { A a; a(rhs, *this); return *this; }
</code></pre>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/925111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/925111</guid><dc:creator><![CDATA[Sunday]]></dc:creator><pubDate>Wed, 23 Nov 2005 11:28:39 GMT</pubDate></item><item><title><![CDATA[Reply to frage zur forward-deklaration on Wed, 23 Nov 2005 11:51:14 GMT]]></title><description><![CDATA[<p>Forward-Deklarationen kannst du nur verwenden, wenn die Größe (und der Aufbau) der Typen keine Rolle spielt - sprich: bei Pointern oder Referenzen. A::operator() benötigt nur das Wissen, daß es eine Klasse &quot;B&quot; gibt, B::operator= benötigt dagegen den Aufbau der Klasse &quot;A&quot;, um compiliert zu werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/925126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/925126</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 23 Nov 2005 11:51:14 GMT</pubDate></item><item><title><![CDATA[Reply to frage zur forward-deklaration on Wed, 23 Nov 2005 11:54:11 GMT]]></title><description><![CDATA[<p>allso ich kann es nicht mit sicherheit sagen, da ich mich eigentlich als Laie bezeichne, aber für mich sieht es wie folgt aus:</p>
<p>Dein Zeiger rhs ist vom Typ B, der ist dem Compiler zu dem Zeitpunkt allerdings noch nicht bekannt, da erst später die Klasse B aufgerufen wird.</p>
<p>Bitte korregieren falls ich einen Mist erzähle!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/925129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/925129</guid><dc:creator><![CDATA[LittleT]]></dc:creator><pubDate>Wed, 23 Nov 2005 11:54:11 GMT</pubDate></item><item><title><![CDATA[Reply to frage zur forward-deklaration on Wed, 23 Nov 2005 12:01:31 GMT]]></title><description><![CDATA[<p>*LittleT korrigiert* rhs ist vom Typ &quot;const C&amp;&quot; (das ist der Parameter der Funktion) - Probleme bekommt die Forward-Deklaration mit den Anweisungen &quot;A a;&quot; (benötigt die Größe eines A-Objektes) und &quot;a(rhs,*this);&quot; (benötigt die Signatur des A::operator()) - diese beiden Angaben erfährt der Compiler erst viel später (nämlich wenn er die Definition von class A liest).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/925139</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/925139</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 23 Nov 2005 12:01:31 GMT</pubDate></item><item><title><![CDATA[Reply to frage zur forward-deklaration on Wed, 23 Nov 2005 12:49:24 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@cstoll</a></p>
<p>danke, ist mir jetzt einiges klarer...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/925203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/925203</guid><dc:creator><![CDATA[Sunday]]></dc:creator><pubDate>Wed, 23 Nov 2005 12:49:24 GMT</pubDate></item></channel></rss>