<?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[Braucht ein Iterator einen operator-&amp;gt;?]]></title><description><![CDATA[<p>Braucht ein Iterator einen operator-&gt; um STL konform zu sein oder ist er optional?</p>
<p>Ich weiß nämlich nicht wie ich ihn in meinem Fall implementieren soll.<br />
Eine C-API gibt mir einen verkettete Liste zurück, in Form von:</p>
<pre><code class="language-cpp">struct Item
{
    int i;
    int j;
    Item* pNext;
};
</code></pre>
<p>Dafür hab ich jetzt einen Iterator geschrieben. Aber ich möchte es so haben das mir der Iterator nur ein Proxyobjekt zurückgibt und nicht einen Zeiger auf die rohe Struktur. Beim operator* geht das auch:</p>
<pre><code class="language-cpp">ItemProxy operator*() const
{
   return ItemProxy(pItem);
}
</code></pre>
<p>Im operator-&gt; müsste ich ja einen Zeiger zurückgeben, aber ich kann ja ItemProxy nicht mit new anlegen da es sonst nie wieder freigeben wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/181269/braucht-ein-iterator-einen-operator-gt</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 05:37:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/181269.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 11 May 2007 17:38:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Braucht ein Iterator einen operator-&amp;gt;? on Fri, 11 May 2007 17:38:42 GMT]]></title><description><![CDATA[<p>Braucht ein Iterator einen operator-&gt; um STL konform zu sein oder ist er optional?</p>
<p>Ich weiß nämlich nicht wie ich ihn in meinem Fall implementieren soll.<br />
Eine C-API gibt mir einen verkettete Liste zurück, in Form von:</p>
<pre><code class="language-cpp">struct Item
{
    int i;
    int j;
    Item* pNext;
};
</code></pre>
<p>Dafür hab ich jetzt einen Iterator geschrieben. Aber ich möchte es so haben das mir der Iterator nur ein Proxyobjekt zurückgibt und nicht einen Zeiger auf die rohe Struktur. Beim operator* geht das auch:</p>
<pre><code class="language-cpp">ItemProxy operator*() const
{
   return ItemProxy(pItem);
}
</code></pre>
<p>Im operator-&gt; müsste ich ja einen Zeiger zurückgeben, aber ich kann ja ItemProxy nicht mit new anlegen da es sonst nie wieder freigeben wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1283161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1283161</guid><dc:creator><![CDATA[dugg]]></dc:creator><pubDate>Fri, 11 May 2007 17:38:42 GMT</pubDate></item><item><title><![CDATA[Reply to Braucht ein Iterator einen operator-&amp;gt;? on Fri, 11 May 2007 18:00:42 GMT]]></title><description><![CDATA[<p>für einen standardkonformen Iterator it ist der Ausdruck *it eine echte Referenz. Davon abgesehen kann dein operator-&gt; ruhig ein Proxyobjekt zurückgeben, wenn dieser Proxy selbst den operator-&gt; geeignet überlädt. Ist aber nur in Ausnahmefällen sinnvoll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1283169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1283169</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 11 May 2007 18:00:42 GMT</pubDate></item><item><title><![CDATA[Reply to Braucht ein Iterator einen operator-&amp;gt;? on Sat, 12 May 2007 14:58:51 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Ist aber nur in Ausnahmefällen sinnvoll.</p>
</blockquote>
<p>???<br />
Was wenn man den Proxy, wie hier anscheineind erfolgt, nach dem Vorschlag der GoF implementiert?</p>
<p>Grüsse</p>
<p>*this</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1283520</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1283520</guid><dc:creator><![CDATA[Gast++]]></dc:creator><pubDate>Sat, 12 May 2007 14:58:51 GMT</pubDate></item><item><title><![CDATA[Reply to Braucht ein Iterator einen operator-&amp;gt;? on Sat, 12 May 2007 15:56:06 GMT]]></title><description><![CDATA[<p>Gast++ schrieb:</p>
<blockquote>
<p>camper schrieb:</p>
<blockquote>
<p>Ist aber nur in Ausnahmefällen sinnvoll.</p>
</blockquote>
<p>???<br />
Was wenn man den Proxy, wie hier anscheineind erfolgt, nach dem Vorschlag der GoF implementiert?</p>
<p>Grüsse</p>
<p>*this</p>
</blockquote>
<p>an externe Kollektionen hatte ich dabei nicht gedacht. Sind wohl mehr als nur ein paar Ausnahmen. Aber bei Containern die vollständig im Speicher stehen, ist es eher selten nötig. Der Sinn eines Proxies für operator-&gt; kann ja nur in irgendwelchen Seiteneffekten im Konstruktor oder Destruktor liegen - und wenn diese so wichtig sind, habe ich gewisse Zweifel, ob es gut ist, diese implizit herbeizuführen. Alexandrescu (glaub er wars) hatte das mal genutzt (hab vergessen wo) um mittels volatile-Überladung ein Interface zu schaffen, das theradsafe ist. Im Zweifel nehm ich die Bemerkung aber lieber zurück als mich darüber zu streiten <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1283571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1283571</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 12 May 2007 15:56:06 GMT</pubDate></item></channel></rss>