<?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[Iterator casten?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich stehe vor folgender Problemstellung:</p>
<p>In einer Liste sind Objekte einer Klasse gespeichert. Ich rufe diese Objekte der Reihe nach mittels einers Iterators auf und übergebe sie an eine Funktion, welche einen Pointer auf die Objekte benötigt und bekomme den Fehler:</p>
<p>no matching function for call to func(std::_List_iterator&lt;A&gt;&amp;)</p>
<p>Hier eine reduzierte Wiedergabe des Algorithmus:</p>
<pre><code>[cpp]
#include &lt;list&gt;

class A 
{};

void func(A* a)
{
    ...
}

int main()
{
    list&lt;A&gt; mylist;
    list&lt;A&gt;::iterator iter;

    for (int i = 0; i != 3; i++)
    {
        mylist.push_back(A)
    }

    for (iter = mylist.begin(); iter != mylist.end(); iter++)
    {
        func(iter);
    }

    return 0;
}
[/cpp]
</code></pre>
<p>Gehört der iterator iter vielleicht vor dem Aufruf der Funktion func(iter) auf den Typ A* gecastet?</p>
<p>Vielen Dank.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/265966/iterator-casten</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 15:44:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/265966.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 01 May 2010 20:30:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Iterator casten? on Sat, 01 May 2010 20:30:23 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich stehe vor folgender Problemstellung:</p>
<p>In einer Liste sind Objekte einer Klasse gespeichert. Ich rufe diese Objekte der Reihe nach mittels einers Iterators auf und übergebe sie an eine Funktion, welche einen Pointer auf die Objekte benötigt und bekomme den Fehler:</p>
<p>no matching function for call to func(std::_List_iterator&lt;A&gt;&amp;)</p>
<p>Hier eine reduzierte Wiedergabe des Algorithmus:</p>
<pre><code>[cpp]
#include &lt;list&gt;

class A 
{};

void func(A* a)
{
    ...
}

int main()
{
    list&lt;A&gt; mylist;
    list&lt;A&gt;::iterator iter;

    for (int i = 0; i != 3; i++)
    {
        mylist.push_back(A)
    }

    for (iter = mylist.begin(); iter != mylist.end(); iter++)
    {
        func(iter);
    }

    return 0;
}
[/cpp]
</code></pre>
<p>Gehört der iterator iter vielleicht vor dem Aufruf der Funktion func(iter) auf den Typ A* gecastet?</p>
<p>Vielen Dank.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1891090</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1891090</guid><dc:creator><![CDATA[rickie]]></dc:creator><pubDate>Sat, 01 May 2010 20:30:23 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator casten? on Sat, 01 May 2010 20:32:56 GMT]]></title><description><![CDATA[<p>Du übergibst einen Iterator, du willst aber einen Zeiger auf A übergeben. Dereferenzier den Iterator und nimm die Addresse.</p>
<p>Fehlerhafter reduzierter Code ist übrigens nicht toll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1891092</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1891092</guid><dc:creator><![CDATA[Janjan]]></dc:creator><pubDate>Sat, 01 May 2010 20:32:56 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator casten? on Sat, 01 May 2010 20:46:30 GMT]]></title><description><![CDATA[<p>Danke für die rasche Antwort.</p>
<p>Wie gelingt mir das Dereferenzieren?</p>
<p>Die Funktionsaufrufe mit</p>
<pre><code>[cpp]
func(*iter);

func(&amp;iter);

A* a = &amp;iter;
func(a);
[/cpp]
</code></pre>
<p>funktionieren nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1891104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1891104</guid><dc:creator><![CDATA[rickie]]></dc:creator><pubDate>Sat, 01 May 2010 20:46:30 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator casten? on Sat, 01 May 2010 20:48:15 GMT]]></title><description><![CDATA[<p>Du musst zuerst den Iterator mit * dereferenzieren. Dann hast du einen Ausdruck vom Typ <code>A&amp;</code> . Wenn du dann mit &amp; die Adresse nimmst, bekommst du einen <code>A*</code> . Also musst du die beiden Operatoren verketten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1891107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1891107</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 01 May 2010 20:48:15 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator casten? on Sat, 01 May 2010 20:59:01 GMT]]></title><description><![CDATA[<p>Ein Zeiger ist ein Iterator. Ein Iterator ist aber nicht notwendigerweise ein Zeiger. Iteratoren sind Verallgemeinerungen von Zeigern. In Deinem Fall ist der Iterator der Liste kein Zeiger -- kann er auch gar nicht sein.</p>
<p>rickie schrieb:</p>
<blockquote>
<pre><code class="language-cpp">for (iter = mylist.begin(); iter != mylist.end(); iter++)
    {
        func(iter);
    }
}
</code></pre>
</blockquote>
<p>Probiere es mal mit<br />
<code>func(&amp;*iter);</code></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1891116</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1891116</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sat, 01 May 2010 20:59:01 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator casten? on Sat, 01 May 2010 21:16:56 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>Ein Zeiger ist ein Iterator. Ein Iterator ist aber nicht notwendigerweise ein Zeiger. Iteratoren sind Verallgemeinerungen von Zeigern. In Deinem Fall ist der Iterator der Liste kein Zeiger -- kann er auch gar nicht sein.</p>
<p>rickie schrieb:</p>
<blockquote>
<pre><code class="language-cpp">for (iter = mylist.begin(); iter != mylist.end(); iter++)
    {
        func(iter);
    }
}
</code></pre>
</blockquote>
<p>Probiere es mal mit<br />
<code>func(&amp;*iter);</code></p>
</blockquote>
<p>Wie schön das du ihm es ihm direkt vorsagst, dann muss er nicht mehr selbst denken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1891126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1891126</guid><dc:creator><![CDATA[Janjan]]></dc:creator><pubDate>Sat, 01 May 2010 21:16:56 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator casten? on Tue, 04 May 2010 06:40:31 GMT]]></title><description><![CDATA[<p>Vielen Danke für Eure Hilfestellungen. Ihr habt mir sehr geholfen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1892050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1892050</guid><dc:creator><![CDATA[rickie]]></dc:creator><pubDate>Tue, 04 May 2010 06:40:31 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator casten? on Tue, 04 May 2010 07:22:39 GMT]]></title><description><![CDATA[<p>rickie schrieb:</p>
<blockquote>
<p>Ihr habt mir sehr geholfen!</p>
</blockquote>
<p>Wenn du es dir durchgelesen hast, es nachvollzogen und verstanden hast, dann ja. Wenn du einfach die vorgekaute Endlösung bentuzt hast ohne weiter drüber nachzudenken, dann wurde dir nicht wirklich geholfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1892060</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1892060</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 04 May 2010 07:22:39 GMT</pubDate></item></channel></rss>