<?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[Vektor eines Objekts durchlaufen lassen]]></title><description><![CDATA[<p>hallo,</p>
<p>ich versuche mich gerade an klassen.</p>
<pre><code class="language-cpp">class speichere
{
private:
  vector &lt;string&gt; Data;

public:
 void setData(string in)
  {
     Data.push_back(in);
  } 

 vector&lt;string&gt; getData()
  {
     return Data;
  }

}
</code></pre>
<p>So also ich möchte jetzt ein Objekt erstellen, das bereits im Konstruktor die Funktion setData aufruft und dann den Vektor befüllt, soweit so gut das bekomm ich glaub noch hin.</p>
<p>wenn ich jetzt in der main das ausgeben will, wie funktioniert das? ich kann mir das gerade nicht vorstellen.</p>
<pre><code class="language-cpp">for (i=0; i&lt;objekt.getData().size(); i++) // geht das so mit der größe ermitteln? sieht irgendwie komisch aus
{
     cout &lt;&lt; objekt.getData()[i] &lt;&lt; endl; // geht das so? sieht auch sehr merkwürdig aus und ist glaub auch nicht effizient oder?
}
</code></pre>
<p>gibt es da eine effizientere methode? ich würds gern von anfang an richtig lernen <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="🙂"
    /><br />
danke für die hilfe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/309483/vektor-eines-objekts-durchlaufen-lassen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 05 Aug 2026 06:30:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/309483.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 24 Oct 2012 06:47:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vektor eines Objekts durchlaufen lassen on Wed, 24 Oct 2012 06:47:25 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>ich versuche mich gerade an klassen.</p>
<pre><code class="language-cpp">class speichere
{
private:
  vector &lt;string&gt; Data;

public:
 void setData(string in)
  {
     Data.push_back(in);
  } 

 vector&lt;string&gt; getData()
  {
     return Data;
  }

}
</code></pre>
<p>So also ich möchte jetzt ein Objekt erstellen, das bereits im Konstruktor die Funktion setData aufruft und dann den Vektor befüllt, soweit so gut das bekomm ich glaub noch hin.</p>
<p>wenn ich jetzt in der main das ausgeben will, wie funktioniert das? ich kann mir das gerade nicht vorstellen.</p>
<pre><code class="language-cpp">for (i=0; i&lt;objekt.getData().size(); i++) // geht das so mit der größe ermitteln? sieht irgendwie komisch aus
{
     cout &lt;&lt; objekt.getData()[i] &lt;&lt; endl; // geht das so? sieht auch sehr merkwürdig aus und ist glaub auch nicht effizient oder?
}
</code></pre>
<p>gibt es da eine effizientere methode? ich würds gern von anfang an richtig lernen <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="🙂"
    /><br />
danke für die hilfe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2263394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2263394</guid><dc:creator><![CDATA[classlearning]]></dc:creator><pubDate>Wed, 24 Oct 2012 06:47:25 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor eines Objekts durchlaufen lassen on Wed, 24 Oct 2012 06:56:05 GMT]]></title><description><![CDATA[<p>Die Aufrufssyntax ist soweit okay, aber die aufgerufenen Funktionen sind in der Tat ineffizient - es macht wenig Sinn, da jedes mal eine Kopie zurückzugeben bzw. anzunehmen. Besser:</p>
<pre><code class="language-cpp">void setData(string const &amp;in)
  {
     Data.push_back(in);
  }

  vector&lt;string&gt; const &amp;getData() const
  {
     return Data;
  }
</code></pre>
<p>Das Stichwort, das du dazu in deinem Buch nachschlagen solltest, ist &quot;Referenz.&quot; Das const hinter getData() führt dazu, dass getData sich auch auf Konstanten des Typs speichere aufrufen lässt (this wird zu speichere const * statt speichere *).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2263398</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2263398</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Wed, 24 Oct 2012 06:56:05 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor eines Objekts durchlaufen lassen on Wed, 24 Oct 2012 07:39:34 GMT]]></title><description><![CDATA[<p>haha nachschlagen, ich weiß nicht wie oft ich referenz und pointer schon gelernt habe in der schule, doch kapiert habe ich es bis heute noch nicht richtig... deswegen versuche ich es jetzt mal komplett selber zu machen doch ich bin immer noch zu doof. falscher studiengang? haha <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>aber danke für deine antwort. ich brauch da vll noch bissle wissen dazu.</p>
<p>warum const? und warum nach der funktion nochmal const?</p>
<p>naja bei setData will ich glaub sogar ne Kopie haben nur beim aufrufen nicht, weil ich will ja nicht nur Data ausgeben sondern mit Data was machen und es wäre nicht schlecht wenn das data im objekt auch geändert werden würde.<br />
aber mit der syntax von der zweiten funktion kann ich noch nix anfangen mit vorallem mit dem const und warum du ne referenz auf getData machst und nicht nen pointer auf Data zurück gibst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2263412</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2263412</guid><dc:creator><![CDATA[classlearning]]></dc:creator><pubDate>Wed, 24 Oct 2012 07:39:34 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor eines Objekts durchlaufen lassen on Wed, 24 Oct 2012 08:21:37 GMT]]></title><description><![CDATA[<p>also ich probiere gerade ein bisschen rum, habe jetzt erst mal des const weg gelassen (was der bauer nicht kennt... <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>das komische ist, ich habe mein programm nicht verändert, aber es macht keinen unterschied ob ich</p>
<pre><code class="language-cpp">vector&lt;string&gt; &amp;getData()
  {
     return Data;
  }
</code></pre>
<p>oder:</p>
<pre><code class="language-cpp">vector&lt;string&gt; getData()
  {
     return Data;
  }
</code></pre>
<p>benutze. In der Main sieht das dann so aus.</p>
<pre><code class="language-cpp">string data = save.getData();
cout &lt;&lt; data &lt;&lt; endl;
</code></pre>
<p>warum macht das keinen unterschied? hab ich da jetzt was falsch verstanden und mach jetzt in der main einfach ne kopie?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2263422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2263422</guid><dc:creator><![CDATA[classlearning]]></dc:creator><pubDate>Wed, 24 Oct 2012 08:21:37 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor eines Objekts durchlaufen lassen on Wed, 24 Oct 2012 08:30:01 GMT]]></title><description><![CDATA[<p>classlearning schrieb:</p>
<blockquote>
<p>warum const? und warum nach der funktion nochmal const?</p>
</blockquote>
<p>1. const: Ich weiß nicht, ob es dir schon klar ist. Eine Referenz auf etwas bedeutet, dass du einen Aliasnamen für etwas kreierst. Das bedeutet, dass, wann immer du mit der Referenz arbeitest, du mit dem Original arbeitest. Deine <code>get</code> -Funktion liefert eine Referenz auf <code>Data</code> (also das Original) zurück, ein geheimes internes Detail. Es wäre doch sehr ärgelich, wenn jemand in deinem geheimen Akten rumpfuscht. Darum gibst du eine const-ref zurück, dann kann niemand rumpfuschen. Etwas konstantes ist nunmal nicht änderbar. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>2. const: Ich weiß nicht, ob du es schon wusstest, aber nich nur Variablen können <code>const</code> sein ( <code>const int x</code> ), sondern auch Instanzen einer Klasse ( <code>Klasse k;</code> ) Es leuchted dir mit Sicherheit ein, das die internen Details eines konstanten Objekts konstant sein sollen, ansonsten machte ein konstantes Objekt nur wenig Sinn. Schreibst du nach einer Methode <code>const</code> hin, bedeutet das, dass die Methode die Datenelemente, sprich die Details eines Objekts nicht ändern kann. D.h. die Datenelemente sind innerhalb der Methode praktisch konstant. Ein Paradigma des objektorientierten Programmierens ist ja, interne Details nur über definierte Schnittstellen zu ändern. Da du also nur über definierte Schnittstellen an deine Datenelemente kommst und die Methode <code>const</code> ist, hast du es geschafft, die Datenelemente konstant zu halten. Das impliziert natürlich, dass du nur <code>const</code> -Methoden mit einem konstanten Objekt ausführen kannst. Ansonsten ist die Sicherheit ja nicht garantiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2263425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2263425</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Wed, 24 Oct 2012 08:30:01 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor eines Objekts durchlaufen lassen on Wed, 24 Oct 2012 08:32:52 GMT]]></title><description><![CDATA[<p>Jetzt habe ich natürlich noch ein wichtigen Satz vergessen: Du machst Methoden immer <code>const</code> , wenn sie die Datenelemente nicht ändern. Es ist logisch, dass das auf alle <code>get</code> -Methoden zutrifft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2263426</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2263426</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Wed, 24 Oct 2012 08:32:52 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor eines Objekts durchlaufen lassen on Wed, 24 Oct 2012 08:33:25 GMT]]></title><description><![CDATA[<p>Naja, bei der Rückgabe per Kopie wird halt der gesamte Vektor und sein Inhalt kopiert, was um Größenordnungen mehr Rechenaufwand ist als einfach einen Verweis zurückzugeben (nichts anderes ist eine Referenz).</p>
<p>Nichts für ungut, aber Referenzen gehören zum Sprachkern, und für const gilt das auch. Die fachgerechte Verwendung beider Dinge sollte man sich frühestmöglich angewöhnen, und wenn der Bauer das nicht kennt, dann muss man ihm das halt ins Maul stopfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2263427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2263427</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Wed, 24 Oct 2012 08:33:25 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor eines Objekts durchlaufen lassen on Wed, 24 Oct 2012 08:45:28 GMT]]></title><description><![CDATA[<p>classlearning schrieb:</p>
<blockquote>
<p>also ich probiere gerade ein bisschen rum, habe jetzt erst mal des const weg gelassen (was der bauer nicht kennt... <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>das komische ist, ich habe mein programm nicht verändert, aber es macht keinen unterschied ob ich</p>
<pre><code class="language-cpp">vector&lt;string&gt; &amp;getData()
  {
     return Data;
  }
</code></pre>
<p>oder:</p>
<pre><code class="language-cpp">vector&lt;string&gt; getData()
  {
     return Data;
  }
</code></pre>
<p>benutze. In der Main sieht das dann so aus.</p>
<pre><code class="language-cpp">string data = save.getData();
cout &lt;&lt; data &lt;&lt; endl;
</code></pre>
<p>warum macht das keinen unterschied? hab ich da jetzt was falsch verstanden und mach jetzt in der main einfach ne kopie?</p>
</blockquote>
<p>Wenn du keine Referenz zurückgibst, dann macht die Anweisung <code>return Data</code> eine Kopie von Data. Dann machst du in der main noch <code>string data = save.getData()</code> , und machst damit nochmals eine Kopie. Du hast dann 2x eine Kopie von <code>Data</code> erstellt, das ist bitter, wo doch der Inhalt immer derselbe ist und du ihn ausschließlich lesen willst.</p>
<p>korrekterweise solltest du es so machen:</p>
<pre><code class="language-cpp">const vector&lt;string&gt;&amp; getData()
{
     return Data;
}
int main()
{
    const vector&lt;string&gt;&amp; = save.getData();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2263430</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2263430</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Wed, 24 Oct 2012 08:45:28 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor eines Objekts durchlaufen lassen on Wed, 24 Oct 2012 09:22:26 GMT]]></title><description><![CDATA[<p>vielen lieben dank out! und auch an die anderen.</p>
<p>aber out:</p>
<pre><code class="language-cpp">const vector&lt;string&gt;&amp; = save.getData();
</code></pre>
<p>bin ich jetzt blöd oder fehlt da nicht eine variable, so kann ich das doch dann garnicht ansprechen oder? oder wie gebe ich das dann aus?</p>
<pre><code class="language-cpp">cout &lt;&lt; ?????? &lt;&lt; endl;
</code></pre>
<p>Dann eine weitere frage, ich muss zur laufzeit objekte erstellen und will die in einen vector speichern. ich habs mit &quot;new&quot; probiert (wie in der schule gelernt). Allerdings geht das garnicht er hat gesagt er kann nicht in *umwandeln. muss ich den vector dann als pointer deklarieren?</p>
<p>ich hab das new einfach mal weg gemacht(hehe ich probier immer aus und schau was passiert) und so funktioniert es. wird jetzt auch ein objekt erstellt?<br />
aber ich habe die vermutung ich kopiere wieder mal munter durch die gegend.</p>
<pre><code class="language-cpp">vector&lt;fileadmin&gt; fileadminContainer;
fileadminContainer.push_back(fileadmin(&quot;String Beispiel&quot;));
</code></pre>
<p>sollte ich doch &quot;new&quot; benutzen muss ich ja danch wieder aufräumen. doch das verstehe ich seit 2 jahren nicht wann und wie man da aufräumt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2263437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2263437</guid><dc:creator><![CDATA[classlearning]]></dc:creator><pubDate>Wed, 24 Oct 2012 09:22:26 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor eines Objekts durchlaufen lassen on Wed, 24 Oct 2012 09:32:01 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">const vector&lt;string&gt;&amp; variable1 = save.getData();
</code></pre>
<p>und wenn ich das so mache, dann kann ich ja variable1 benutzen so als wenn ich die ganz normal mit</p>
<pre><code class="language-cpp">variable1 =&quot;teststring&quot;
</code></pre>
<p>deklariert hätte? irgendwie ist das so oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2263440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2263440</guid><dc:creator><![CDATA[classlearning]]></dc:creator><pubDate>Wed, 24 Oct 2012 09:32:01 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor eines Objekts durchlaufen lassen on Wed, 24 Oct 2012 09:52:49 GMT]]></title><description><![CDATA[<p>classlearning schrieb:</p>
<blockquote>
<pre><code class="language-cpp">const vector&lt;string&gt;&amp; variable1 = save.getData();
</code></pre>
<p>und wenn ich das so mache, dann kann ich ja variable1 benutzen so als wenn ich die ganz normal mit</p>
<pre><code class="language-cpp">variable1 =&quot;teststring&quot;
</code></pre>
<p>deklariert hätte? irgendwie ist das so oder?</p>
</blockquote>
<p>nein, das ist nicht so. Ein std::vector<a href="std::string" rel="nofollow">std::string</a> ist etwas anderes als ein std::string.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2263450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2263450</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Wed, 24 Oct 2012 09:52:49 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor eines Objekts durchlaufen lassen on Wed, 24 Oct 2012 09:55:54 GMT]]></title><description><![CDATA[<p>classlearning schrieb:</p>
<blockquote>
<p>vielen lieben dank out! und auch an die anderen.</p>
<p>aber out:</p>
<pre><code class="language-cpp">const vector&lt;string&gt;&amp; = save.getData();
</code></pre>
<p>bin ich jetzt blöd oder fehlt da nicht eine variable, so kann ich das doch dann garnicht ansprechen oder? oder wie gebe ich das dann aus?</p>
<pre><code class="language-cpp">cout &lt;&lt; ?????? &lt;&lt; endl;
</code></pre>
</blockquote>
<p>Ja, stimmt natürlich, da war mein Kopf wohl wo anders, und das const bei der Methode hab ich auch vergessen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<pre><code class="language-cpp">const vector&lt;string&gt;&amp; getData() const
{
     return Data;
}
int main()
{
    const vector&lt;string&gt;&amp; ori = save.getData();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2263451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2263451</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Wed, 24 Oct 2012 09:55:54 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor eines Objekts durchlaufen lassen on Wed, 24 Oct 2012 10:09:27 GMT]]></title><description><![CDATA[<p>daddy_felix schrieb:</p>
<blockquote>
<p>classlearning schrieb:</p>
<blockquote>
<pre><code class="language-cpp">const vector&lt;string&gt;&amp; variable1 = save.getData();
</code></pre>
<p>und wenn ich das so mache, dann kann ich ja variable1 benutzen so als wenn ich die ganz normal mit</p>
<pre><code class="language-cpp">variable1 =&quot;teststring&quot;
</code></pre>
<p>deklariert hätte? irgendwie ist das so oder?</p>
</blockquote>
<p>nein, das ist nicht so. Ein std::vector<a href="std::string" rel="nofollow">std::string</a> ist etwas anderes als ein std::string.</p>
</blockquote>
<p>ja natürlich ich bin mit meinem kopf auch woanderst heute das ist ja schlimm</p>
<pre><code class="language-cpp">// wenn es const ist, dürfte das doch nicht gehen oder?? da sollte er doch schimpfen oder?
// d.h. ich kann das nicht machen, allerdings wenn es nicht 'const' wäre dann schon?
variable1.push_back(&quot;teststring&quot;);

//aber ausgeben müsste doch dann ganznormal über
cout &lt;&lt; variable1[0] &lt;&lt; endl;
// gehen?
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2263454</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2263454</guid><dc:creator><![CDATA[classlearning]]></dc:creator><pubDate>Wed, 24 Oct 2012 10:09:27 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor eines Objekts durchlaufen lassen on Wed, 24 Oct 2012 10:41:10 GMT]]></title><description><![CDATA[<p>classlearning schrieb:</p>
<blockquote>
<p>ja natürlich ich bin mit meinem kopf auch woanderst heute das ist ja schlimm</p>
<pre><code class="language-cpp">// wenn es const ist, dürfte das doch nicht gehen oder?? da sollte er doch schimpfen oder?
// d.h. ich kann das nicht machen, allerdings wenn es nicht 'const' wäre dann schon?
variable1.push_back(&quot;teststring&quot;);

//aber ausgeben müsste doch dann ganznormal über
cout &lt;&lt; variable1[0] &lt;&lt; endl;
// gehen?
</code></pre>
</blockquote>
<p>Ja, ersteres funktioniert nicht wenn es <code>const</code> ist, da es den <code>vector</code> ja verändern würde. Letzteres kannst du natürlich machen, es verändert den <code>vector</code> ja nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2263465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2263465</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Wed, 24 Oct 2012 10:41:10 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor eines Objekts durchlaufen lassen on Wed, 24 Oct 2012 10:42:55 GMT]]></title><description><![CDATA[<p>classlearning schrieb:</p>
<blockquote>
<pre><code class="language-cpp">// wenn es const ist, dürfte das doch nicht gehen oder?? da sollte er doch schimpfen oder?
// d.h. ich kann das nicht machen, allerdings wenn es nicht 'const' wäre dann schon?
variable1.push_back(&quot;teststring&quot;);
</code></pre>
</blockquote>
<p>Deswegen kommen solche Member Häufig in Paaren: const/non-const</p>
<pre><code class="language-cpp">class speicher{
public:
  const vector&lt;string&gt;&amp; getData() const;
        vector&lt;string&gt;&amp; getData();
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2263466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2263466</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Wed, 24 Oct 2012 10:42:55 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor eines Objekts durchlaufen lassen on Wed, 24 Oct 2012 11:01:35 GMT]]></title><description><![CDATA[<p>Furble Wurble schrieb:</p>
<blockquote>
<p>classlearning schrieb:</p>
<blockquote>
<pre><code class="language-cpp">// wenn es const ist, dürfte das doch nicht gehen oder?? da sollte er doch schimpfen oder?
// d.h. ich kann das nicht machen, allerdings wenn es nicht 'const' wäre dann schon?
variable1.push_back(&quot;teststring&quot;);
</code></pre>
</blockquote>
<p>Deswegen kommen solche Member Häufig in Paaren: const/non-const</p>
<pre><code class="language-cpp">class speicher{
public:
  const vector&lt;string&gt;&amp; getData() const;
        vector&lt;string&gt;&amp; getData();
};
</code></pre>
</blockquote>
<p>Verstehe ich nicht. Macht doch gar kein Sinn. Zum einen kann ein non-const Objekt eine const-Methode aufrufen, zum anderen, wieso sollte eine get-Methode Daten ändern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2263473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2263473</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Wed, 24 Oct 2012 11:01:35 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor eines Objekts durchlaufen lassen on Wed, 24 Oct 2012 11:08:09 GMT]]></title><description><![CDATA[<p>Verstehe ich nicht. Macht doch gar kein Sinn. Zum einen kann ein non-const Objekt eine const-Methode aufrufen, zum anderen, wieso sollte eine get-Methode Daten ändern?[/quote]</p>
<p>Finde ich auch seltsam.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2263476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2263476</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Wed, 24 Oct 2012 11:08:09 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor eines Objekts durchlaufen lassen on Wed, 24 Oct 2012 11:17:25 GMT]]></title><description><![CDATA[<p>Aus einer Konstante kannst du keine nicht-konstante Referenz auf einen ihrer Member bekommen. Wenn du das bei einer Variablen des selben Typs aber haben willst, musst du das auf diese Weise explizit angeben. Damit beispielsweise</p>
<pre><code class="language-cpp">obj.getData().push_back(&quot;foo&quot;);
</code></pre>
<p>funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2263486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2263486</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Wed, 24 Oct 2012 11:17:25 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor eines Objekts durchlaufen lassen on Wed, 24 Oct 2012 11:17:30 GMT]]></title><description><![CDATA[<p>aber warum in paaren ich kann doch einfach ne setfunktion schreiben die das macht...</p>
<p>also ich verstehe den sinn jetzt hinter const schon, wenn ich die variable hole dann sollte eigentlich nur was gemacht werden aber nicht verändert.<br />
wenn ich die doch veränder will, will ich doch ne extra funktion haben. oder verstehe ich da jetzt was falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2263487</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2263487</guid><dc:creator><![CDATA[classlearning]]></dc:creator><pubDate>Wed, 24 Oct 2012 11:17:30 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor eines Objekts durchlaufen lassen on Wed, 24 Oct 2012 11:19:58 GMT]]></title><description><![CDATA[<p>Das macht schon Sinn. Denn der Zugriff auf einen vector per [] verändert ja den Vector erst einmal nicht (daher const) und erlaubt so die Verwendung in konstanten Methoden. ABER wenn man eine Veränderung durchführen möchte wird die nicht konstante Methode verwendet.</p>
<p>Anders sieht es zum Beispiel bei std::map aus. Dort ist der []-operator nur als nicht konstante Variante vorhanden und kann somit in konstanten Funktionen nicht verwendet werden.</p>
<p>Grob erklärt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2263488</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2263488</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 24 Oct 2012 11:19:58 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor eines Objekts durchlaufen lassen on Wed, 24 Oct 2012 11:23:14 GMT]]></title><description><![CDATA[<p>Du kannst die Funktion auf diese Weise stumpf überladen wie jede andere Funktion. Die Semantik ist die selbe wie bei zwei freien Funktionen der Form</p>
<pre><code class="language-cpp">vector&lt;string&gt; const &amp;getData(speichere const *this_ptr);
vector&lt;string&gt;       &amp;getData(speichere       *this_ptr);
</code></pre>
<p>d. h., für Konstanten wird erstere und für Variablen letztere benutzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2263492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2263492</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Wed, 24 Oct 2012 11:23:14 GMT</pubDate></item></channel></rss>