<?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[Konstruktoraufruf]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich stehe vor etwa folgendem Problem bei dem ich nicht mehr weiter weiß:</p>
<pre><code>[cpp]
class A
{
  private:
    int var;
  public:
    A {};
    void setVarA (int value) { var=value; }
}

A::A
{
  var = B::getCount(); ??????
}

class B
{
  private:
    int count;
    A a;
  public:
    B { count = 0; }
    int getCount () { return ++count; }
}

int main ()
{
  B b1;
}
[/cpp]
</code></pre>
<p>Beim Aufruf des Konstruktors der class A (was bei der Definition des Objektes b geschieht) soll dem Objekt a eine von der Klasse B verwaltete Zahl zugewiesen werden. Mir ist allerdings unklar, wie der Konstruktor von A die Funktion getCount der Klasse B aufrufen kann.<br />
Leider kann ich den Code nicht auf Inheritance abändern, wo dies mit upcasten ginge.</p>
<p>Hättet ihr vielleicht einen Vorschlag wie ich den Funktionsaufruf um Konstruktor A gestalten muss?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/264838/konstruktoraufruf</link><generator>RSS for Node</generator><lastBuildDate>Fri, 04 Sep 2026 13:20:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/264838.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 13 Apr 2010 16:43:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Konstruktoraufruf on Tue, 13 Apr 2010 16:43:23 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich stehe vor etwa folgendem Problem bei dem ich nicht mehr weiter weiß:</p>
<pre><code>[cpp]
class A
{
  private:
    int var;
  public:
    A {};
    void setVarA (int value) { var=value; }
}

A::A
{
  var = B::getCount(); ??????
}

class B
{
  private:
    int count;
    A a;
  public:
    B { count = 0; }
    int getCount () { return ++count; }
}

int main ()
{
  B b1;
}
[/cpp]
</code></pre>
<p>Beim Aufruf des Konstruktors der class A (was bei der Definition des Objektes b geschieht) soll dem Objekt a eine von der Klasse B verwaltete Zahl zugewiesen werden. Mir ist allerdings unklar, wie der Konstruktor von A die Funktion getCount der Klasse B aufrufen kann.<br />
Leider kann ich den Code nicht auf Inheritance abändern, wo dies mit upcasten ginge.</p>
<p>Hättet ihr vielleicht einen Vorschlag wie ich den Funktionsaufruf um Konstruktor A gestalten muss?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882288</guid><dc:creator><![CDATA[rickie]]></dc:creator><pubDate>Tue, 13 Apr 2010 16:43:23 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktoraufruf on Tue, 13 Apr 2010 16:45:12 GMT]]></title><description><![CDATA[<p>Klarer Designfehler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882291</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882291</guid><dc:creator><![CDATA[Janjan]]></dc:creator><pubDate>Tue, 13 Apr 2010 16:45:12 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktoraufruf on Tue, 13 Apr 2010 16:48:50 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">A::A(const B&amp; b) // &lt;- Funktionsklammern nicht vergessen, auch bei 0 Parametern
: var(b.getCount()) // &lt;- Initialisierungsliste
{
   // &lt;- Funktionsrumpf ist leer
}
</code></pre>
<p>Dafür muss <code>B</code> zu dem Zeitpunkt vollständig bekannt sein. Lagere die Klassendefinitionen (mit Deklarationen der Methoden) in eigene Headerdateien aus benutze dort Vorwärtsdeklarationen der jeweils anderen Klasse. In den Implementierungsdateien (.cpp) inkludierst du die Header und definierst alle Methoden.</p>
<p>Mache Funktionen wie <code>B::getCount()</code> konstant, wenn sie nichts am Objekt ändern.</p>
<pre><code class="language-cpp">int getCount() const;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1882295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882295</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 13 Apr 2010 16:48:50 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktoraufruf on Tue, 13 Apr 2010 16:50:37 GMT]]></title><description><![CDATA[<p>Janjan schrieb:</p>
<blockquote>
<p>Klarer Designfehler.</p>
</blockquote>
<p>Schön, dass du immer so konstruktive und hilfreiche Beiträge schreibst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882296</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882296</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 13 Apr 2010 16:50:37 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktoraufruf on Tue, 13 Apr 2010 17:13:34 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Janjan schrieb:</p>
<blockquote>
<p>Klarer Designfehler.</p>
</blockquote>
<p>Schön, dass du immer so konstruktive und hilfreiche Beiträge schreibst.</p>
</blockquote>
<p>Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882316</guid><dc:creator><![CDATA[Janjan]]></dc:creator><pubDate>Tue, 13 Apr 2010 17:13:34 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktoraufruf on Tue, 13 Apr 2010 21:09:41 GMT]]></title><description><![CDATA[<p>Die Lösung von Nexus ist im Grunde korrekt.<br />
Besser ist aus meiner Sicht aber den von der Basisklasse benötigten Wert direkt zu übergeben, wie folgt:</p>
<pre><code class="language-cpp">A::A(int count) // &lt;- Funktionsklammern nicht vergessen, auch bei 0 Parametern
: var(count) // &lt;- Initialisierungsliste
{
   // &lt;- Funktionsrumpf ist leer
}
</code></pre>
<p>Bei Nexus' Lösung legt man sich auf ein abgeleitete Klasse bestimmten Typs fest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882403</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882403</guid><dc:creator><![CDATA[einint]]></dc:creator><pubDate>Tue, 13 Apr 2010 21:09:41 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktoraufruf on Tue, 13 Apr 2010 21:14:50 GMT]]></title><description><![CDATA[<p>einint schrieb:</p>
<blockquote>
<p>Bei Nexus' Lösung legt man sich auf ein abgeleitete Klasse bestimmten Typs fest.</p>
</blockquote>
<p>Das stimmt natürlich, aber ich wollte nicht zu viel spekulieren, was das Design angeht. Kann beispielsweise sein, dass <code>A</code> von <code>B</code> auf irgendeine Art abhängt und möglicherweise noch mehr als nur der <code>int</code> im Konstruktor wichtig ist.</p>
<p>Ansonsten ist es tatsächlich sinnvoller, sich eine unnötige Abhängigkeit zu sparen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882408</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 13 Apr 2010 21:14:50 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktoraufruf on Wed, 14 Apr 2010 07:41:42 GMT]]></title><description><![CDATA[<p>Vielen Danke für Eure Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882500</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882500</guid><dc:creator><![CDATA[rickie]]></dc:creator><pubDate>Wed, 14 Apr 2010 07:41:42 GMT</pubDate></item></channel></rss>