<?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[Deque aus Zeigern]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich muss einige C++ Experten mal um ihren fachmännischen Rat fragen:</p>
<p>Folgendes Szenario:</p>
<p>Wir haben ein Struct:</p>
<pre><code class="language-cpp">struct MyStruct {
   int val1;
   char text[256];
};
</code></pre>
<p>und einen Typ definiert als</p>
<pre><code class="language-cpp">typedef std::deque&lt;MyStruct*&gt; DType;
</code></pre>
<p>Innerhalb einer Klasse wird nun ein Member dieses Types definiert und eine Methode die das Member zurückgibt.</p>
<pre><code class="language-cpp">class MyClass {
   ...
   public:
      DType&amp; GetMyDeque() {
             return MyDeque;
      }
   private:
      DType MyDeque;
}
</code></pre>
<p>Von Aussen wird mittels der Get Methode ein Handle auf das Objekt geholt:</p>
<pre><code class="language-cpp">DType&amp; MyDequeToo = MyObject.GetMyDeque();
</code></pre>
<p>Nun zur Ersten Frage:</p>
<p>Was GENAU passiert in der Get-Methode? Gibt die Methode eine Referenz auf das Member zurück? Es steht ja ein &quot;return Member&quot; und nicht wie wenn man zum Beispiel einen Zeiger auf das Objekt zurückgeben wöllte &quot;return Adresse des Members&quot;. Oder kopiert diese Methode das gesamte Objekt bei Übergabe?</p>
<p>Zweite Frage:</p>
<p>Wenn ich Daten anhängen will, an das Deque, dann lege ich zunächst ein Zeiger auf ein Element an, allokiere Speicher, und hänge den zeiger an, also:</p>
<pre><code class="language-cpp">MyStruct* MyPointer;
MyPointer = new MyStruct();
MyPointer-&gt;val1=99;

MyDequeToo.push_back( MyPointer );
</code></pre>
<p>Sollte doch ok sein oder? Was ist nun wenn ich ein Element wieder lösche mittels Pop. Muss ich dann den Speicher wieder mit delete freigeben? oder erledigt das pop für mich?</p>
<p>Danke<br />
und Gruß<br />
mc_ginley</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/181508/deque-aus-zeigern</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 08:21:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/181508.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 14 May 2007 14:35:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Deque aus Zeigern on Mon, 14 May 2007 14:35:42 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich muss einige C++ Experten mal um ihren fachmännischen Rat fragen:</p>
<p>Folgendes Szenario:</p>
<p>Wir haben ein Struct:</p>
<pre><code class="language-cpp">struct MyStruct {
   int val1;
   char text[256];
};
</code></pre>
<p>und einen Typ definiert als</p>
<pre><code class="language-cpp">typedef std::deque&lt;MyStruct*&gt; DType;
</code></pre>
<p>Innerhalb einer Klasse wird nun ein Member dieses Types definiert und eine Methode die das Member zurückgibt.</p>
<pre><code class="language-cpp">class MyClass {
   ...
   public:
      DType&amp; GetMyDeque() {
             return MyDeque;
      }
   private:
      DType MyDeque;
}
</code></pre>
<p>Von Aussen wird mittels der Get Methode ein Handle auf das Objekt geholt:</p>
<pre><code class="language-cpp">DType&amp; MyDequeToo = MyObject.GetMyDeque();
</code></pre>
<p>Nun zur Ersten Frage:</p>
<p>Was GENAU passiert in der Get-Methode? Gibt die Methode eine Referenz auf das Member zurück? Es steht ja ein &quot;return Member&quot; und nicht wie wenn man zum Beispiel einen Zeiger auf das Objekt zurückgeben wöllte &quot;return Adresse des Members&quot;. Oder kopiert diese Methode das gesamte Objekt bei Übergabe?</p>
<p>Zweite Frage:</p>
<p>Wenn ich Daten anhängen will, an das Deque, dann lege ich zunächst ein Zeiger auf ein Element an, allokiere Speicher, und hänge den zeiger an, also:</p>
<pre><code class="language-cpp">MyStruct* MyPointer;
MyPointer = new MyStruct();
MyPointer-&gt;val1=99;

MyDequeToo.push_back( MyPointer );
</code></pre>
<p>Sollte doch ok sein oder? Was ist nun wenn ich ein Element wieder lösche mittels Pop. Muss ich dann den Speicher wieder mit delete freigeben? oder erledigt das pop für mich?</p>
<p>Danke<br />
und Gruß<br />
mc_ginley</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284715</guid><dc:creator><![CDATA[mc_ginley]]></dc:creator><pubDate>Mon, 14 May 2007 14:35:42 GMT</pubDate></item><item><title><![CDATA[Reply to Deque aus Zeigern on Mon, 14 May 2007 14:51:19 GMT]]></title><description><![CDATA[<p>Zu eins: du lieferst eine Referenz auf das Private element. dadurch ist natürlich deine gesammte Kapselung im Arsch, da ja jeder an das Originalobjekt rankommt.</p>
<p>Zu zwei: Du musst selbst löschen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284731</guid><dc:creator><![CDATA[Helium]]></dc:creator><pubDate>Mon, 14 May 2007 14:51:19 GMT</pubDate></item></channel></rss>