<?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[Zugriff auf internen Vektor]]></title><description><![CDATA[<p>Abend,</p>
<p>Ich habe eine Klasse mit einem Member<br />
std::vector&lt;OutputDevice&gt; outputDevices;</p>
<p>Nun möchte ich, dass Anwender der Klasse leicht lesend auf diesen Member zugreifen können. Der Zugriff soll jedoch maximal simpel sein (also kein Iterator oder so).</p>
<p>Dabei hatte ich folgende Gedanken (würde mich freuen, wenn die wer kommentieren könnte!):</p>
<p>Möglichkeit 1:<br />
By value return:</p>
<pre><code class="language-cpp">std::vector&lt;OutputDevice&gt; getOutputDevices() const;
</code></pre>
<p>Pro: Simpel, Nutzer kann internen Member nicht ändern. Contra: Langsam</p>
<p>Möglichkeit 2:<br />
konstante Referenz</p>
<pre><code class="language-cpp">const std::vector&lt;OutputDevice&gt;&amp; getOutputDevices() const;
</code></pre>
<p>Pro: Simpel, Nutzer kann nur lesen. Kontra: ??</p>
<p>Noch eine Zusatzfrage zu Möglichkeit 2:<br />
Sehe ich das richtig, dass bei dieser Benutzung:</p>
<pre><code class="language-cpp">std::vector&lt;OutputDevice&gt;&amp; foo = Manager::getOutputDevices();
</code></pre>
<p>nicht ein einziges Mal ein CopyCtor aufgerufen wird.</p>
<p>Hingegen hier jedoch schon einmal:</p>
<pre><code class="language-cpp">std::vector&lt;OutputDevice&gt; foo2 = Manager::getOutputDevices();
</code></pre>
<p>?</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/244550/zugriff-auf-internen-vektor</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 10:14:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/244550.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 01 Jul 2009 19:48:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zugriff auf internen Vektor on Wed, 01 Jul 2009 19:48:52 GMT]]></title><description><![CDATA[<p>Abend,</p>
<p>Ich habe eine Klasse mit einem Member<br />
std::vector&lt;OutputDevice&gt; outputDevices;</p>
<p>Nun möchte ich, dass Anwender der Klasse leicht lesend auf diesen Member zugreifen können. Der Zugriff soll jedoch maximal simpel sein (also kein Iterator oder so).</p>
<p>Dabei hatte ich folgende Gedanken (würde mich freuen, wenn die wer kommentieren könnte!):</p>
<p>Möglichkeit 1:<br />
By value return:</p>
<pre><code class="language-cpp">std::vector&lt;OutputDevice&gt; getOutputDevices() const;
</code></pre>
<p>Pro: Simpel, Nutzer kann internen Member nicht ändern. Contra: Langsam</p>
<p>Möglichkeit 2:<br />
konstante Referenz</p>
<pre><code class="language-cpp">const std::vector&lt;OutputDevice&gt;&amp; getOutputDevices() const;
</code></pre>
<p>Pro: Simpel, Nutzer kann nur lesen. Kontra: ??</p>
<p>Noch eine Zusatzfrage zu Möglichkeit 2:<br />
Sehe ich das richtig, dass bei dieser Benutzung:</p>
<pre><code class="language-cpp">std::vector&lt;OutputDevice&gt;&amp; foo = Manager::getOutputDevices();
</code></pre>
<p>nicht ein einziges Mal ein CopyCtor aufgerufen wird.</p>
<p>Hingegen hier jedoch schon einmal:</p>
<pre><code class="language-cpp">std::vector&lt;OutputDevice&gt; foo2 = Manager::getOutputDevices();
</code></pre>
<p>?</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735739</guid><dc:creator><![CDATA[muggl]]></dc:creator><pubDate>Wed, 01 Jul 2009 19:48:52 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf internen Vektor on Wed, 01 Jul 2009 20:21:39 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">const std::vector&lt;OutputDevice&gt;&amp; getOutputDevices() const;
</code></pre>
<p>Das wäre wohl die sinnvollste Variante.</p>
<pre><code class="language-cpp">const std::vector&lt;OutputDevice&gt;&amp; foo = Manager::getOutputDevices(); /*const &amp;-Variante*/
</code></pre>
<p>Hier würde in der Tat nichts kopiert werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735744</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Wed, 01 Jul 2009 20:21:39 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf internen Vektor on Wed, 01 Jul 2009 20:23:28 GMT]]></title><description><![CDATA[<p>Möglichkeit 2 ist zu bevorzugen.</p>
<p>muggl schrieb:</p>
<blockquote>
<p>Noch eine Zusatzfrage zu Möglichkeit 2:<br />
Sehe ich das richtig, dass bei dieser Benutzung:</p>
<pre><code class="language-cpp">std::vector&lt;OutputDevice&gt;&amp; foo = Manager::getOutputDevices();
</code></pre>
<p>nicht ein einziges Mal ein CopyCtor aufgerufen wird.</p>
</blockquote>
<p>Prinzipiell ja.<br />
Nur kompiliert das Beispiel so wie es da steht nicht <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="😉"
    /><br />
denn foo ist eine non-const Referenz, wird aber mit einer const-referenz initialisiert.</p>
<pre><code class="language-cpp">const std::vector&lt;OutputDevice&gt;&amp; foo = Manager::getOutputDevices();
</code></pre>
<p>hingegen geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735746</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735746</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Wed, 01 Jul 2009 20:23:28 GMT</pubDate></item></channel></rss>