<?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[Was wird hier zurückgegeben?]]></title><description><![CDATA[<p>Terminverwalter.h:</p>
<pre><code class="language-cpp">class Termineintrag;

class Terminverwalter
{
public:
    Termineintrag&amp; holeTermin(const char* name);
};
</code></pre>
<p>Was für einen Rückgabewert hat denn holeTermin? Verstehe das mit dem &amp; nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/129726/was-wird-hier-zurückgegeben</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 07:31:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/129726.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 16 Dec 2005 09:11:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Was wird hier zurückgegeben? on Fri, 16 Dec 2005 09:11:29 GMT]]></title><description><![CDATA[<p>Terminverwalter.h:</p>
<pre><code class="language-cpp">class Termineintrag;

class Terminverwalter
{
public:
    Termineintrag&amp; holeTermin(const char* name);
};
</code></pre>
<p>Was für einen Rückgabewert hat denn holeTermin? Verstehe das mit dem &amp; nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/943329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943329</guid><dc:creator><![CDATA[NullAhnung]]></dc:creator><pubDate>Fri, 16 Dec 2005 09:11:29 GMT</pubDate></item><item><title><![CDATA[Reply to Was wird hier zurückgegeben? on Fri, 16 Dec 2005 09:24:46 GMT]]></title><description><![CDATA[<p>Die Methode holeTermin liefert eine Referenz auf einen Termineintrag zurück. Da ich in Terminverwalter keine Member sehe, hoffe ich stark, dass der zurückgegebene Wert static ist, denn sonst zeigt die Referenz auf ein nicht mehr existentes Objekt.</p>
<p><a href="http://tutorial.schornboeck.net/referenzen.htm" rel="nofollow">http://tutorial.schornboeck.net/referenzen.htm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/943341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943341</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Fri, 16 Dec 2005 09:24:46 GMT</pubDate></item><item><title><![CDATA[Reply to Was wird hier zurückgegeben? on Fri, 16 Dec 2005 09:43:54 GMT]]></title><description><![CDATA[<p>Entschuldige, habe ein wenig Code unterschlagen:</p>
<pre><code class="language-cpp">class Termineintrag;

class Terminverwalter
{
public:
    Termineintrag&amp; HoleOderErzeugeTermin(const char* name);
    // Die Funktion prüft, ob der Termin vorhanden ist, wenn ja,
    // Referenz zurück, wenn nein, erzeugen und Referenz zurück
};

class Termineintrag
{
public:
    modifiziereTermin();

private:
    friend class Terminverwalter;
    Termineintrag(const char* name, Terminplaner* planer);
    Termineintrag();
    virtual ~Termineintrag();

    Terminverwalter* terminverwalter;
};
</code></pre>
<p>Für mich ist das deswegen kryptisch, weil ich nicht weiss, wie ich einen Termineintrag erzeugen soll, wenn der Ctor private ist!? Wie müsste denn die Syntax lauten, wenn ich einen Termin erzeugen will?</p>
<pre><code class="language-cpp">Termineintrag&amp; terminverwalter-&gt;holeOderErzeugeTermin(&quot;Neuer Termin&quot;); // ist das so richtig?
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/943350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943350</guid><dc:creator><![CDATA[NullAhnung]]></dc:creator><pubDate>Fri, 16 Dec 2005 09:43:54 GMT</pubDate></item><item><title><![CDATA[Reply to Was wird hier zurückgegeben? on Fri, 16 Dec 2005 10:14:09 GMT]]></title><description><![CDATA[<p>Wenn der Sinn der Sache ist dass ein Termin nur vom Terminverwalter erzeugt werden kann, muss die Klasse Terminverwalter in Termineintrag noch als friend deklariert werden, da sonst niemand überhaupt einen Termin erzeugen kann (da c'tor private, wie Du schon richtig erkannt hast).</p>
<p>Um einen einzelnen Termin zu speichern brauchst Du eine Referenz:</p>
<pre><code class="language-cpp">Termineintrag&amp; mein_termin = terminverwalter-&gt;holeOderErzeugeTermin(&quot;Neuer Termin&quot;);
</code></pre>
<p>Vorausgesetzt der Terminverwalter erzeugt einen Termin der irgendwo gehalten wird (Vector z.B.):</p>
<pre><code class="language-cpp">Termineintrag&amp; Terminverwalter::holeOderErzeugeTermin(const char *name)
{
    /* Überprüfung ob vorhanden weggelassen */
    Termineintrag neuerTermin(name, ...);
    terminliste.push_back(neuerTermin);
    return terminliste[terminliste.size()-1];
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/943367</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943367</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 16 Dec 2005 10:14:09 GMT</pubDate></item><item><title><![CDATA[Reply to Was wird hier zurückgegeben? on Fri, 16 Dec 2005 11:47:21 GMT]]></title><description><![CDATA[<p>NullAhnung schrieb:</p>
<blockquote>
<p>Entschuldige, habe ein wenig Code unterschlagen:</p>
<pre><code class="language-cpp">class Termineintrag
{
//...
    friend class Terminverwalter;
//...
};
</code></pre>
<p>Für mich ist das deswegen kryptisch, weil ich nicht weiss, wie ich einen Termineintrag erzeugen soll, wenn der Ctor private ist!? Wie müsste denn die Syntax lauten, wenn ich einen Termin erzeugen will?</p>
</blockquote>
<p>Das Zauberwort hier heißt &quot;friend&quot; - das sagt dem Compiler, daß der Klasse &quot;Terminverwalter&quot; die ganzen Zugriffsbeschränkungen egal sein können. Das bedeutet, daß der Terminverwalter auch die privaten Elemente von Termineintrag nutzen kann, insbesondere dessen Konstruktor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/943455</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943455</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 16 Dec 2005 11:47:21 GMT</pubDate></item><item><title><![CDATA[Reply to Was wird hier zurückgegeben? on Fri, 16 Dec 2005 12:19:38 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Das Zauberwort hier heißt &quot;friend&quot; - das sagt dem Compiler, daß der Klasse &quot;Terminverwalter&quot; die ganzen Zugriffsbeschränkungen egal sein können. Das bedeutet, daß der Terminverwalter auch die privaten Elemente von Termineintrag nutzen kann, insbesondere dessen Konstruktor.</p>
</blockquote>
<p>Das ist ne wichtige information die mich weiter bringt. Aus welchem Grund steht das die Klassedeklaration alleine oben?</p>
<pre><code class="language-cpp">class Termineintrag; // Wofür steht die Deklaration? Unten ist doch Definition...

class Terminverwalter
{
    // Klasse Terminverwalter
};

class Termineintrag
{
    // Klasse Termineintrag
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/943480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943480</guid><dc:creator><![CDATA[NullAhnung]]></dc:creator><pubDate>Fri, 16 Dec 2005 12:19:38 GMT</pubDate></item><item><title><![CDATA[Reply to Was wird hier zurückgegeben? on Fri, 16 Dec 2005 12:23:37 GMT]]></title><description><![CDATA[<p>Der Compiler arbeitet sich von oben nach unten durch den Quelltext - also muß er bei der Deklaration der Methode &quot;Terminverwalter::holeOderErzeugeTermin()&quot; wissen, daß du eine Klasse namens &quot;Temineintrag&quot; hast. Und genau das besagt die Forward-Deklaration &quot;class Termineintrag;&quot;</p>
<p>(wie diese Klasse aufgebaut ist, interessiert den Compiler an der Stelle nicht - das benötigt er erst, wenn er die Definition der Methode oder einen konkreten Methodenaufruf anfässt)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/943483</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943483</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 16 Dec 2005 12:23:37 GMT</pubDate></item></channel></rss>