<?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[Klassen, Referenzen - Ist das so in Ordnung.]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>wieder eine C++ Anfängerfrage.</p>
<p>Ich versuche gerade mit dem Handling von Klassen und Objekten zurecht zu kommen und evtl. sogar irgendwann das Konzept &quot;Referenz&quot; zu verstehen.</p>
<p>Ich habe eine Klasse &quot;TadObject&quot; als Basisklasse, die bei der Erzeugung von Instanzen eine &quot;Id&quot; verwaltet. Davon können spezialisiertere Klassen erben können, z.B. TadLocation. Darum geht es aber aktuell nicht.</p>
<p>Jetzt möchte ich eine Kollektion von TadObject verwalten, also Instanzen von TadObject oder Unterklassen erzeugen und dort speichern, suchen, usw. Also tatsächlich sollen dort natürlich Verweise auf die Objekte gespeichert werden. Referenzen, Pointer, ? Wie oben geschrieben blick ich da noch nicht so durch.</p>
<p>Was ich bisher habe, scheint auch zu funktionieren. Ich würde nur gerne wissen, ob das einigermaßen &quot;sauber&quot; implementiert ist oder mir unter Umständen etwas um die Ohren fliegen könnte.</p>
<pre><code>// tadobject.h
class TadObject
{
    public:
        TadObject(const string aName);
        TadObject(const TadObject&amp; aObject);
        virtual ~TadObject();
        int getId();
        string getName();
    private:
        const int id;
        const string name;
        static int nextId;
};

inline int TadObject::getId()
{
    return id;
}

inline string TadObject::getName()
{
    return name;
}

//tadobject.cpp
int TadObject::nextId = 1;

TadObject::TadObject(string aName): id(TadObject::nextId++), name(aName) { }

TadObject::TadObject(const TadObject &amp;aObject) : id(TadObject::nextId++), name(aObject.name) { }

TadObject::~TadObject() { }

//tadcollection.h
class TadCollection
{
    public:
        TadCollection();
        void insert(TadObject&amp; aObject);
        TadObject&amp; at(int aId);
    private:
        std::map&lt;int, TadObject&amp;&gt; items;
};

//tadcollection.cpp
TadCollection::TadCollection() { }

void TadCollection::insert(TadObject&amp; aObject)
{
    items.insert(std::pair&lt;int, TadObject&amp;&gt;(aObject.getId(), aObject));
}

TadObject &amp;TadCollection::at(int aId)
{
    return items.at(aId);
}

//main.cpp
int main(int argc, char *argv[])
{
    TadObject o1(&quot;Eins&quot;);
    TadObject o2(&quot;Zwei&quot;);
    TadLocation o3(&quot;Drei&quot;);
    TadObject o4 = o3;

    cout &lt;&lt; o1.getId() &lt;&lt; &quot; : &quot; &lt;&lt; o1.getName() &lt;&lt; endl;
    cout &lt;&lt; o2.getId() &lt;&lt; &quot; : &quot; &lt;&lt; o2.getName() &lt;&lt; endl;
    cout &lt;&lt; o3.getId() &lt;&lt; &quot; : &quot; &lt;&lt; o3.getName() &lt;&lt; endl;
    cout &lt;&lt; o4.getId() &lt;&lt; &quot; : &quot; &lt;&lt; o4.getName() &lt;&lt; endl;
    cout &lt;&lt; endl;

    TadCollection collection;
    collection.insert(o1);
    collection.insert(o2);

    cout &lt;&lt; collection.at(1).getId() &lt;&lt; &quot; : &quot; &lt;&lt; collection.at(1).getName() &lt;&lt; endl;
    cout &lt;&lt; collection.at(2).getId() &lt;&lt; &quot; : &quot; &lt;&lt; collection.at(2).getName() &lt;&lt; endl;

    return 0;
}
</code></pre>
<p>Wäre sehr nett, wenn mich der eine oder andere korrigieren könnte und im besten Fall auch kurz erläutert, was das Problem werden könnte.</p>
<p>Danke und Gruß,<br />
temi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/340397/klassen-referenzen-ist-das-so-in-ordnung</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 05:38:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/340397.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 05 Nov 2016 13:33:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klassen, Referenzen - Ist das so in Ordnung. on Sat, 05 Nov 2016 13:33:32 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>wieder eine C++ Anfängerfrage.</p>
<p>Ich versuche gerade mit dem Handling von Klassen und Objekten zurecht zu kommen und evtl. sogar irgendwann das Konzept &quot;Referenz&quot; zu verstehen.</p>
<p>Ich habe eine Klasse &quot;TadObject&quot; als Basisklasse, die bei der Erzeugung von Instanzen eine &quot;Id&quot; verwaltet. Davon können spezialisiertere Klassen erben können, z.B. TadLocation. Darum geht es aber aktuell nicht.</p>
<p>Jetzt möchte ich eine Kollektion von TadObject verwalten, also Instanzen von TadObject oder Unterklassen erzeugen und dort speichern, suchen, usw. Also tatsächlich sollen dort natürlich Verweise auf die Objekte gespeichert werden. Referenzen, Pointer, ? Wie oben geschrieben blick ich da noch nicht so durch.</p>
<p>Was ich bisher habe, scheint auch zu funktionieren. Ich würde nur gerne wissen, ob das einigermaßen &quot;sauber&quot; implementiert ist oder mir unter Umständen etwas um die Ohren fliegen könnte.</p>
<pre><code>// tadobject.h
class TadObject
{
    public:
        TadObject(const string aName);
        TadObject(const TadObject&amp; aObject);
        virtual ~TadObject();
        int getId();
        string getName();
    private:
        const int id;
        const string name;
        static int nextId;
};

inline int TadObject::getId()
{
    return id;
}

inline string TadObject::getName()
{
    return name;
}

//tadobject.cpp
int TadObject::nextId = 1;

TadObject::TadObject(string aName): id(TadObject::nextId++), name(aName) { }

TadObject::TadObject(const TadObject &amp;aObject) : id(TadObject::nextId++), name(aObject.name) { }

TadObject::~TadObject() { }

//tadcollection.h
class TadCollection
{
    public:
        TadCollection();
        void insert(TadObject&amp; aObject);
        TadObject&amp; at(int aId);
    private:
        std::map&lt;int, TadObject&amp;&gt; items;
};

//tadcollection.cpp
TadCollection::TadCollection() { }

void TadCollection::insert(TadObject&amp; aObject)
{
    items.insert(std::pair&lt;int, TadObject&amp;&gt;(aObject.getId(), aObject));
}

TadObject &amp;TadCollection::at(int aId)
{
    return items.at(aId);
}

//main.cpp
int main(int argc, char *argv[])
{
    TadObject o1(&quot;Eins&quot;);
    TadObject o2(&quot;Zwei&quot;);
    TadLocation o3(&quot;Drei&quot;);
    TadObject o4 = o3;

    cout &lt;&lt; o1.getId() &lt;&lt; &quot; : &quot; &lt;&lt; o1.getName() &lt;&lt; endl;
    cout &lt;&lt; o2.getId() &lt;&lt; &quot; : &quot; &lt;&lt; o2.getName() &lt;&lt; endl;
    cout &lt;&lt; o3.getId() &lt;&lt; &quot; : &quot; &lt;&lt; o3.getName() &lt;&lt; endl;
    cout &lt;&lt; o4.getId() &lt;&lt; &quot; : &quot; &lt;&lt; o4.getName() &lt;&lt; endl;
    cout &lt;&lt; endl;

    TadCollection collection;
    collection.insert(o1);
    collection.insert(o2);

    cout &lt;&lt; collection.at(1).getId() &lt;&lt; &quot; : &quot; &lt;&lt; collection.at(1).getName() &lt;&lt; endl;
    cout &lt;&lt; collection.at(2).getId() &lt;&lt; &quot; : &quot; &lt;&lt; collection.at(2).getName() &lt;&lt; endl;

    return 0;
}
</code></pre>
<p>Wäre sehr nett, wenn mich der eine oder andere korrigieren könnte und im besten Fall auch kurz erläutert, was das Problem werden könnte.</p>
<p>Danke und Gruß,<br />
temi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2514165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514165</guid><dc:creator><![CDATA[temi]]></dc:creator><pubDate>Sat, 05 Nov 2016 13:33:32 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen, Referenzen - Ist das so in Ordnung. on Sat, 05 Nov 2016 15:16:16 GMT]]></title><description><![CDATA[<p>Soo, nun bin ich etwas weiter gekommen und ein paar zusätzliche Fragen sind aufgetaucht:</p>
<pre><code>int main(int argc, char *argv[])
{
    TadObject o1(&quot;Eins&quot;);
    TadObject o2(&quot;Zwei&quot;);
    TadLocation o3(&quot;Drei&quot;); // TadLocation mit ctor von TadObject
    TadObject o4 = o3;
    TadLocation o5(&quot;Vier&quot;, &quot;Du siehst eine große Vier.&quot;); // TadLocation mit erweitertem ctor
    TadObject* o6 = new TadObject(&quot;Sechs&quot;); // Zeiger auf ein Object

    cout &lt;&lt; o1.getId() &lt;&lt; &quot; : &quot; &lt;&lt; o1.getName() &lt;&lt; endl;
    cout &lt;&lt; o2.getId() &lt;&lt; &quot; : &quot; &lt;&lt; o2.getName() &lt;&lt; endl;
    cout &lt;&lt; o3.getId() &lt;&lt; &quot; : &quot; &lt;&lt; o3.getName() &lt;&lt; endl;
    cout &lt;&lt; o4.getId() &lt;&lt; &quot; : &quot; &lt;&lt; o4.getName() &lt;&lt; endl;

    cout &lt;&lt; o5.getName() &lt;&lt; &quot; : &quot; &lt;&lt; o5.getDescription() &lt;&lt; endl;

    cout &lt;&lt; o6-&gt;getId() &lt;&lt; &quot; : &quot; &lt;&lt; o6-&gt;getName() &lt;&lt; endl; // Zugriff über &quot;-&gt;&quot;, wie erwartet
    cout &lt;&lt; endl;

    TadCollection collection;
    collection.insert(o1);
    collection.insert(o2);
    collection.insert(o3);
    collection.insert(o4);
    collection.insert(o5);
    collection.insert(*o6); // Zeiger in Collection einfügen
    collection.insert(new TadObject(&quot;Sieben&quot;)); // Geht nicht!!! ctor übeladen?

    cout &lt;&lt; collection.at(1).getId() &lt;&lt; &quot; : &quot; &lt;&lt; collection.at(1).getName() &lt;&lt; endl;
    cout &lt;&lt; collection.at(2).getId() &lt;&lt; &quot; : &quot; &lt;&lt; collection.at(2).getName() &lt;&lt; endl;

    cout &lt;&lt; collection[3].getId() &lt;&lt; &quot; : &quot; &lt;&lt; collection[3].getName() &lt;&lt; endl;
    cout &lt;&lt; collection[6].getId() &lt;&lt; &quot; : &quot; &lt;&lt; collection[6].getName() &lt;&lt; endl; // Zugriff über &quot;.&quot; ???
    cout &lt;&lt; endl;

    TadObject&amp; r1 = o1; // Referenz auf o1

    // Speicheradressen von o1
    cout &lt;&lt; &quot;o1 (Ursprungsklasse): &quot; &lt;&lt; &amp;o1 &lt;&lt; endl;
    cout &lt;&lt; &quot;r1:(Referenz auf o1): &quot; &lt;&lt; &amp;r1 &lt;&lt; endl;
    cout &lt;&lt; &quot;o1 (aus Kollektion) : &quot; &lt;&lt; &amp;collection[1] &lt;&lt; endl;

    // Speicheradressen von o6
    cout &lt;&lt; &quot;o6 (Ursprungsklasse): &quot; &lt;&lt; o6 &lt;&lt; endl;
    cout &lt;&lt; &quot;o6 (aus Kollektion) : &quot; &lt;&lt; &amp;collection[6] &lt;&lt; endl;

    delete(o6); // Wohin damit?

    return 0;
}
</code></pre>
<p>Zuerst hab ich mir mal die Speicheradressen von ein paar Variablen ausgeben lassen. Da z.B. alle Adressen von o1 identisch sind, müsste das mit dem Speichern von Verweisen ja funktionieren. Auch die Adressen des gespeicherten Zeigers o6 sind identisch. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Mittlerweile habe ich auch den operator [] überladen, so dass ein direkter Zugriff über die Id möglich ist.</p>
<p>Beim Zeiger o6 ist zunächst der Zugriff auf Members nur über -&gt; möglich, warum ist das bei dem o6 aus der Kollektion nicht mehr so?</p>
<p>Wer könnte die Verwaltung von o6 (das abschließende delete) übernehmen. Kann ich in der Kollektion irgendwie herausfinden, ob das gespeicherte Objekt mit &quot;delete&quot; freigegeben werden muss? Dann könnte das der dtor von TadCollection übernehmen.</p>
<p>Für das Testen ist die Vorgehensweise mit</p>
<pre><code>TadObject o1(&quot;EINS&quot;)
</code></pre>
<p>und spätere Zuweisung zur Kollektion ja in Ordnung. Soll das mal, z.B. aus einer Datei (Liste von Strings) geschehen, dann müsste das ja in der Art</p>
<pre><code>collection.insert(new TadObject(strAusListe));
</code></pre>
<p>passieren. Das geht leider noch nicht!?</p>
<p>Letztes Problem. Wenn ich in der Kollektion eine Unterklasse von TadObject speichere, dann habe ich nach dem Lesen aus der Kollektion keinen Zugriff auf die Member der Unterklasse. Ist ja auch logisch. In C# gab es dafür so etwas wie</p>
<pre><code>collection[3] as TadLocation
</code></pre>
<p>Wie geht das in C++??</p>
<p>Danke,<br />
temi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2514174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514174</guid><dc:creator><![CDATA[temi]]></dc:creator><pubDate>Sat, 05 Nov 2016 15:16:16 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen, Referenzen - Ist das so in Ordnung. on Sat, 05 Nov 2016 16:05:29 GMT]]></title><description><![CDATA[<p>Also erstens: mit Referenzen in Containern kommst du schnell in die Hölle, tu das nicht und nimm stattdessen Pointer.</p>
<p>Ein Problem ist zum Beispiel, dass .at() normalerweise es ermöglichen sollte, da ein neues Objekt zuzuweisen, was aber nicht gehen wird. Außerdem ist es viel logischer, wenn du Pointer speicherst - du hast ja gerade keine konkrete Objekte, die du referenzieren willst, sondern &quot;irgendwelche&quot; Objekte.</p>
<p>Dann noch ein paar Bemerkungen:<br />
- in deinen Headern fehlt überall das std:: - ich hoffe, du hast dort kein &quot;using namespace&quot; drin?</p>
<p>- wenn du eine Default-Implementierung machen willst wie bei deinem leeren Destruktor, dann kannst du einfach &quot;virtual ~TadObject() = default;&quot; schreiben.</p>
<p>- ich würde bei getName() eher &quot;const string&amp;&quot; als Rückgabetyp erwarten, denn du brauchst den String ja nicht dauernd zu kopieren.</p>
<p>- Wenn du verschiedene Klassen drin hast in deiner Collection und ein &quot;as&quot; suchst, dann gucke bei &quot;dynamic_cast&lt;DerivedClass*&gt;(pointerToBase)&quot; nach. Allerdings sollte man versuchen, die casts zu vermeiden. Wenn du ausschließlich Derived-Objekte in deinem Container hast, dann template die Container-Klasse so, dass du dort den Typ mit angeben kannst und verzichte auf alle Casts.</p>
<p>- Vermeide explizites &quot;new&quot; und &quot;delete&quot;! Nimm stattdessen smart_pointer.</p>
<blockquote>
<p>Kann ich in der Kollektion irgendwie herausfinden, ob das gespeicherte Objekt mit &quot;delete&quot; freigegeben werden muss? Dann könnte das der dtor von TadCollection übernehmen.</p>
</blockquote>
<p>Nein. Daher: entweder, du speicherst smart pointer in deinem Container. Dann geht alles automatisch - und zu zeigst an, dass dem Container die Objekte gehören. Oder du speicherst normale pointer. Das zeigt normalerweise an, dass der Container keine Ownership hat und die anderswo behandelt wird. (wie im Vorpost gesagt, bei Qt-Objekten ist das ggf. anders)<br />
Wie man es machen sollte, erklärt z.B. folgendes Video gut: <a href="https://www.youtube.com/watch?v=JfmTagWcqoE" rel="nofollow">https://www.youtube.com/watch?v=JfmTagWcqoE</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2514178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514178</guid><dc:creator><![CDATA[wob]]></dc:creator><pubDate>Sat, 05 Nov 2016 16:05:29 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen, Referenzen - Ist das so in Ordnung. on Sat, 05 Nov 2016 16:45:10 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/33261">@wob</a> Danke für die Antwort. Ich versuche mich der Sprache noch zu nähern...</p>
<blockquote>
<p>mit Referenzen in Containern kommst du schnell in die Hölle, tu das nicht und nimm stattdessen Pointer.</p>
</blockquote>
<p>Irgendwie ist mir der Unterschied noch nicht so klar, für mich stellen beide &quot;Referenzen&quot; dar. Vielleicht dieser? Eine Referenz referenziert auf ein konkretes Objekt. Ein Zeiger referenziert auf die Adresse eines Objektes. Was aber irgendwie wieder identisch ist, weil beides über die Adresse funktioniert und auch beim Zeiger das Objekt im Speicher erzeugt wurde, also konkret vorhanden ist. Und wann nutze ich dann was?</p>
<blockquote>
<p>ich hoffe, du hast dort kein &quot;using namespace&quot; drin?</p>
</blockquote>
<p>Ähem, ja hab ich. Schlecht? Warum?</p>
<blockquote>
<p>ich würde bei getName() eher &quot;const string&amp;&quot; als Rückgabetyp erwarten</p>
</blockquote>
<p>Ist das der richtige Einsatz von Referenzen? Ist das const dabei obligatorisch? Was ist der Unterschied zwischen:</p>
<pre><code>const string&amp; getName()
</code></pre>
<p>und</p>
<pre><code>string&amp; getName()
</code></pre>
<p>Da waren jetzt sicher auch blöde Fragen dabei, aber manche Dinge in C++ machen es mit ganz schön schwer. Ich muss jetzt leider hier Schluss machen, weil wir gleich zu einem feuchtfröhlichem Feierabend losziehen. Ich bin aber sicher, dass ich morgen noch weitere Fragen haben werden, falls euch das nicht stört.</p>
<p>Gruß,<br />
temi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2514180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514180</guid><dc:creator><![CDATA[temi]]></dc:creator><pubDate>Sat, 05 Nov 2016 16:45:10 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen, Referenzen - Ist das so in Ordnung. on Sun, 06 Nov 2016 01:29:50 GMT]]></title><description><![CDATA[<p>temi schrieb:</p>
<blockquote>
<p>Irgendwie ist mir der Unterschied noch nicht so klar, für mich stellen beide &quot;Referenzen&quot; dar.</p>
</blockquote>
<p>Eine Referenz ist ein anderer Name für ein Objekt. Unterschiede sind z.B., dass du einem Pointer auch nullptr zuweisen kannst (zeigt auf nichts) - Referenz auf nichts gibt es nicht! Und auch: einer Pointervariablen kannst du einen Wert zuweisen, d.h. sie nachträglich auf andere Variablen zeigen lassen. Eine Referenz initialisierst du einmalig und nicht wieder!</p>
<p>Also</p>
<pre><code>int i,j;
int *p = &amp;i;
p = &amp;j; // ok, p zeigt nun auf j
int &amp;r = i; 
r = j; //weist i den Wert von j zu, r bleibt weiterhin Ref auf i
</code></pre>
<p>Und sogar sizeof(referenz) gibt dir die Größe des referenzierten Objektes, nicht die der Referenz!</p>
<p>Daher müsste man Referenzen nochmal verpacken, um sie in Container zu legen, siehe z.B. <a href="http://en.cppreference.com/w/cpp/utility/functional/reference_wrapper" rel="nofollow">http://en.cppreference.com/w/cpp/utility/functional/reference_wrapper</a></p>
<blockquote>
<blockquote>
<p>ich hoffe, du hast dort kein &quot;using namespace&quot; drin?</p>
</blockquote>
<p>Ähem, ja hab ich. Schlecht? Warum?</p>
</blockquote>
<p>Sollte hoffentlich in jedem C++-Buch stehen. Wenn du das machst, wird automatisch in jeder Datei, die den Header included, das &quot;using namespace std&quot; drin sein! Header sollten aber nur Klassen/Funktionssignaturen zur Verfüfung stellen, nicht automatisch meine Namespaces ändern. Ansonsten zwingst du das &quot;using namespace&quot; jedem auf, der deinen Header benutzen möchte.</p>
<blockquote>
<blockquote>
<p>ich würde bei getName() eher &quot;const string&amp;&quot; als Rückgabetyp erwarten</p>
</blockquote>
<p>Ist das der richtige Einsatz von Referenzen? Ist das const dabei obligatorisch? Was ist der Unterschied zwischen:</p>
<pre><code>const string&amp; getName()
</code></pre>
<p>und</p>
<pre><code>string&amp; getName()
</code></pre>
</blockquote>
<p>Klar ist das richtig. Was erwartest du von &quot;getName&quot;?<br />
- soll einfach sein (d.h. nicht unnötig kopieren)<br />
- soll das Objekt nicht ändern</p>
<p>Daher lautet die Funktion vollständig:</p>
<pre><code>const string&amp; TadObject::getName() const {
    return name;
}
</code></pre>
<p>Beachte: 2x const! Das hintere sagt dir, dass getName das Objekt nicht ändert.<br />
Wenn du nur string&amp; getName() hast, dann könnte Code von außen Namen ändern:</p>
<pre><code>TadObject o1(&quot;Eins&quot;); 
o1.getName() = &quot;Zwei&quot;;
</code></pre>
<p>bzw. das würde nicht compilieren, da du ja &quot;<strong>const</strong> string name&quot; als Membervariable hast. Da das const ist, kannst du nicht einfach string&amp; returnen, denn das würde sich ja widersprechen.<br />
-&gt; <code>error: invalid initialization of reference of type ‘std::string&amp; {aka std::basic_string&lt;char&gt;&amp;}’ from expression of type ‘const string {aka const std::basic_string&lt;char&gt;}’</code></p>
<p>Im Gegensatz zu Java sind strings in C++ nicht immutable!</p>
<p>Eine Zuweisung der Art</p>
<pre><code>string name = o1.getName()
</code></pre>
<p>geht natürlich weiterhin, denn hier würde jetzt das ganze String-Objekt kopiert und damit wirst du das const los.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2514217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514217</guid><dc:creator><![CDATA[wob]]></dc:creator><pubDate>Sun, 06 Nov 2016 01:29:50 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen, Referenzen - Ist das so in Ordnung. on Sun, 06 Nov 2016 08:57:05 GMT]]></title><description><![CDATA[<blockquote>
<p>Wenn du das machst, wird automatisch in jeder Datei, die den Header included, das &quot;using namespace std&quot; drin sein</p>
</blockquote>
<p>Das stimmt. Es war nicht ganz leicht es zu finden, aber es steht tatsächlich auch in meinem Buch.</p>
<p>Danke für die ausführliche Erklärung zur Rückgabe von Referenzen. Mir war in Beispielen auch schon die inflationäre Verwendung von &quot;const&quot; aufgefallen ohne eine rechte Erklärung dafür zu finden.</p>
<p>Jetzt verbessere ich erst mal meine Klassen, dann seh ich weiter.</p>
<p>Schönen Sonntag,<br />
temi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2514224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514224</guid><dc:creator><![CDATA[temi]]></dc:creator><pubDate>Sun, 06 Nov 2016 08:57:05 GMT</pubDate></item></channel></rss>