<?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[Problem mit (*Iterator)]]></title><description><![CDATA[<p>Der Compiler generiert einen Fehler bei folgendem Code:</p>
<pre><code class="language-cpp">struct SSectionData {...};

typedef std::wstring tstring;
typedef std::map&lt;tstring, SSectionData&gt; section_map;
typedef std::pair&lt;tstring, SSectionData&gt; section_pair;
typedef std::vector&lt;section_pair*&gt; sorted_section_vector;

void SortSections(sorted_section_vector&amp; Output)
{
  section_map&amp; SectionMap = GetSectionMap();
  section_map::iterator SectionIter = SectionMap.begin();
  ...
  section_pair&amp; Test = (*SectionIter); // Fehler
  ...
}
</code></pre>
<blockquote>
<p>error C2440: 'Initialisierung': 'std::pair&lt;_Ty1,_Ty2&gt;' kann nicht in 'section_pair &amp;' konvertiert werden</p>
</blockquote>
<p>Das funktioniert auch nicht:</p>
<pre><code class="language-cpp">std::pair&lt;tstring, SSectionData&gt;&amp; Test = (*SectionIter);
</code></pre>
<blockquote>
<p>error C2440: 'Initialisierung': 'std::pair&lt;_Ty1,_Ty2&gt;' kann nicht in 'std::pair&lt;_Ty1,_Ty2&gt; &amp;' konvertiert werden</p>
</blockquote>
<p>Das funktioniert jedoch:</p>
<pre><code class="language-cpp">section_pair Test = (*SectionIter);
</code></pre>
<p>Aber ich möchte einen Zeiger auf das in der map gespeicherte Pair, keine Kopie. Und so weit ich sehen kann, liefert doch *SectionIter eine Referenz auf das gespeicherte Pair zurück, oder? (Mein eigentliches Ziel:)</p>
<pre><code class="language-cpp">section_pair* Test = &amp;(*SectionIter);
Output.insert(InsertPosition, Test);
</code></pre>
<blockquote>
<p>error C2440: 'Initialisierung': 'std::pair&lt;_Ty1,_Ty2&gt; *' kann nicht in 'section_pair *' konvertiert werden</p>
</blockquote>
<p>Hat jemand eine Idee, wodran es liegen könnte? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/245226/problem-mit-iterator</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 21:11:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/245226.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 11 Jul 2009 09:54:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit (*Iterator) on Sat, 11 Jul 2009 10:01:26 GMT]]></title><description><![CDATA[<p>Der Compiler generiert einen Fehler bei folgendem Code:</p>
<pre><code class="language-cpp">struct SSectionData {...};

typedef std::wstring tstring;
typedef std::map&lt;tstring, SSectionData&gt; section_map;
typedef std::pair&lt;tstring, SSectionData&gt; section_pair;
typedef std::vector&lt;section_pair*&gt; sorted_section_vector;

void SortSections(sorted_section_vector&amp; Output)
{
  section_map&amp; SectionMap = GetSectionMap();
  section_map::iterator SectionIter = SectionMap.begin();
  ...
  section_pair&amp; Test = (*SectionIter); // Fehler
  ...
}
</code></pre>
<blockquote>
<p>error C2440: 'Initialisierung': 'std::pair&lt;_Ty1,_Ty2&gt;' kann nicht in 'section_pair &amp;' konvertiert werden</p>
</blockquote>
<p>Das funktioniert auch nicht:</p>
<pre><code class="language-cpp">std::pair&lt;tstring, SSectionData&gt;&amp; Test = (*SectionIter);
</code></pre>
<blockquote>
<p>error C2440: 'Initialisierung': 'std::pair&lt;_Ty1,_Ty2&gt;' kann nicht in 'std::pair&lt;_Ty1,_Ty2&gt; &amp;' konvertiert werden</p>
</blockquote>
<p>Das funktioniert jedoch:</p>
<pre><code class="language-cpp">section_pair Test = (*SectionIter);
</code></pre>
<p>Aber ich möchte einen Zeiger auf das in der map gespeicherte Pair, keine Kopie. Und so weit ich sehen kann, liefert doch *SectionIter eine Referenz auf das gespeicherte Pair zurück, oder? (Mein eigentliches Ziel:)</p>
<pre><code class="language-cpp">section_pair* Test = &amp;(*SectionIter);
Output.insert(InsertPosition, Test);
</code></pre>
<blockquote>
<p>error C2440: 'Initialisierung': 'std::pair&lt;_Ty1,_Ty2&gt; *' kann nicht in 'section_pair *' konvertiert werden</p>
</blockquote>
<p>Hat jemand eine Idee, wodran es liegen könnte? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1740851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1740851</guid><dc:creator><![CDATA[Gugi]]></dc:creator><pubDate>Sat, 11 Jul 2009 10:01:26 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit (*Iterator) on Sat, 11 Jul 2009 10:24:46 GMT]]></title><description><![CDATA[<p>1. Du gibst nicht die ganzen Fehlermeldungen an.<br />
2. Da man bei einer std::map den Key nicht einfach verändern darf, wird beim Dereferenzieren eines Iterators ein <code>std::pair&lt;Key const, Mapped&gt;&amp;</code> zurückgegeben. Dies wäre auch sehr gut aus der Fehlermeldung ersichtlich, wenn du sie eben ganz angegeben hättest.<br />
3. Die Kopie funktioniert, da du dadurch keine Referenz auf den Key mehr hast, sondern eben eine Kopie. Daher muss Key im kopierten Typ nicht konstant sein.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1740863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1740863</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sat, 11 Jul 2009 10:24:46 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit (*Iterator) on Sat, 11 Jul 2009 10:36:53 GMT]]></title><description><![CDATA[<p>Das ist wirklich die ganze Fehlermeldung. Das einzige was ich davon entfernt hab, ist die Datei, in der der Fehler auftritt...</p>
<p>Und es wird in der Tat pair&lt;const Key, Type&gt; zurückgegeben <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="🙄"
    /><br />
Danke <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1740872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1740872</guid><dc:creator><![CDATA[Gugi]]></dc:creator><pubDate>Sat, 11 Jul 2009 10:36:53 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit (*Iterator) on Sat, 11 Jul 2009 10:41:44 GMT]]></title><description><![CDATA[<p>Gugi schrieb:</p>
<blockquote>
<p>Das ist wirklich die ganze Fehlermeldung. Das einzige was ich davon entfernt hab, ist die Datei, in der der Fehler auftritt...</p>
</blockquote>
<p>100%ig nicht!<br />
Darunter steht immer noch in eckigen Klammer was _Ty1, _Ty2, usw. bedeutet. Solche Fehlermeldungen sind meistens mehrere Zeilen lang.</p>
<p>Hier ein Beispiel (auch nur der Pfad rausgekürzt):</p>
<pre><code class="language-cpp">#include &lt;map&gt;

int main()
{
	std::map&lt;int, int&gt; map;
	map[0] = 0;

	std::pair&lt;int, int&gt;&amp; p = *map.begin();

	return 0;
}
</code></pre>
<pre><code>1&gt;Compiling...
1&gt;main.cpp
1&gt;error C2440: 'initializing' : cannot convert from 'std::pair&lt;_Ty1,_Ty2&gt;' to 'std::pair&lt;_Ty1,_Ty2&gt; &amp;'
1&gt;        with
1&gt;        [
1&gt;            _Ty1=const int,
1&gt;            _Ty2=int
1&gt;        ]
1&gt;        and
1&gt;        [
1&gt;            _Ty1=int,
1&gt;            _Ty2=int
1&gt;        ]
</code></pre>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1740873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1740873</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sat, 11 Jul 2009 10:41:44 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit (*Iterator) on Sat, 11 Jul 2009 12:36:54 GMT]]></title><description><![CDATA[<p>Oha! Ich schaue in VS2008 immer in der &quot;Fehlerliste&quot; nach, dort steht das nicht. In der &quot;Ausgabe&quot; steht es jedoch... Und wieder was gelernt^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1740929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1740929</guid><dc:creator><![CDATA[Gugi]]></dc:creator><pubDate>Sat, 11 Jul 2009 12:36:54 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit (*Iterator) on Sat, 11 Jul 2009 13:06:10 GMT]]></title><description><![CDATA[<p>Hmmm, stimmt, es gibt ja noch eine Fehlerliste <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 />
Die benutze ich persönlich eigentlich nie, weil sie eben nicht alle Informationen anzeigt. Zudem kannst du in der Ausgabe auch einen Doppelklick auf den Fehler machen und kommst zur entsprechenden Stelle. Die Fehlerliste ist eigentlich total überflüssig, sie stellt es höchstens ein wenig schöner dar und lässt ein paar Sortierungen zu. Habe ich aber noch nie benötigt.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1740942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1740942</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sat, 11 Jul 2009 13:06:10 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit (*Iterator) on Sat, 11 Jul 2009 18:13:39 GMT]]></title><description><![CDATA[<p>Huch, Fehlerliste. Wusste gar nicht, dass es die gibt, aber konnte bisher trotzdem Fehler beheben. <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>In MSVC++ gibt es sowieso einige Menüs, die ich noch nie verwendet habe...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1741101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741101</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 11 Jul 2009 18:13:39 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit (*Iterator) on Sat, 11 Jul 2009 18:28:56 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Huch, Fehlerliste. Wusste gar nicht, dass es die gibt, aber konnte bisher trotzdem Fehler beheben. <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>In MSVC++ gibt es sowieso einige Menüs, die ich noch nie verwendet habe...</p>
</blockquote>
<p>Dito. Imo braucht man eh keine grosse Filterung der Probleme/Warnungen. Fehler muss man sowieso beim ersten beginngen abarbeiten und Warnungen.. Naja.. Die sollten einen eh ständig nerven, dass man etwas dagegen tut. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1741113</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741113</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sat, 11 Jul 2009 18:28:56 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit (*Iterator) on Sat, 11 Jul 2009 19:02:59 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>[...] und Warnungen.. Naja.. Die sollten einen eh ständig nerven, dass man etwas dagegen tut. <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>
</blockquote>
<p>Hm, manchmal gibt es aber schon so eine Versuchung zu <code>#pragma warning(disable: )</code> - zum Beispiel bei &quot;Zuweisungsoperator konnte nicht generiert werden&quot; - das weiss ich, wenn ich <code>const</code> -Member habe, und jetzt? <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/1741130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741130</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 11 Jul 2009 19:02:59 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit (*Iterator) on Sun, 12 Jul 2009 11:10:21 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>drakon schrieb:</p>
<blockquote>
<p>[...] und Warnungen.. Naja.. Die sollten einen eh ständig nerven, dass man etwas dagegen tut. <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>
</blockquote>
<p>Hm, manchmal gibt es aber schon so eine Versuchung zu <code>#pragma warning(disable: )</code> - zum Beispiel bei &quot;Zuweisungsoperator konnte nicht generiert werden&quot; - das weiss ich, wenn ich <code>const</code> -Member habe, und jetzt? <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>
</blockquote>
<p>Ja, klar, das kann man natürlich machen, aber nicht gerade beim ersten mal, sondenr erst, wenn die Warnung wirklich nervt. Allerdings würde ich da eh nicht die Warnung ausschalten, sondern den Zuweisungsoperator halt privat deklarieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1741409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741409</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 12 Jul 2009 11:10:21 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit (*Iterator) on Sun, 12 Jul 2009 12:06:06 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Ja, klar, das kann man natürlich machen, aber nicht gerade beim ersten mal, sondenr erst, wenn die Warnung wirklich nervt. Allerdings würde ich da eh nicht die Warnung ausschalten, sondern den Zuweisungsoperator halt privat deklarieren.</p>
</blockquote>
<p>Es ist allerdings problematisch, wenn die Klasse aus einer anderen Bibliothek stammt. Habe ich zum Beispiel bei Boost.Fusion erlebt und weil das noch riesige Templatekonstrukte sind, hast du zu jeder Warnung noch die Erklärungen, von welcher Instantiierung mit welchen Parametern <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>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1741443</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741443</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 12 Jul 2009 12:06:06 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit (*Iterator) on Sun, 12 Jul 2009 12:07:09 GMT]]></title><description><![CDATA[<p>Hehe. Dann schalt halt die Warnung aus.. :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1741444</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741444</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 12 Jul 2009 12:07:09 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit (*Iterator) on Sun, 12 Jul 2009 12:27:20 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>drakon schrieb:</p>
<blockquote>
<p>Ja, klar, das kann man natürlich machen, aber nicht gerade beim ersten mal, sondenr erst, wenn die Warnung wirklich nervt. Allerdings würde ich da eh nicht die Warnung ausschalten, sondern den Zuweisungsoperator halt privat deklarieren.</p>
</blockquote>
<p>Es ist allerdings problematisch, wenn die Klasse aus einer anderen Bibliothek stammt. Habe ich zum Beispiel bei Boost.Fusion erlebt und weil das noch riesige Templatekonstrukte sind, hast du zu jeder Warnung noch die Erklärungen, von welcher Instantiierung mit welchen Parametern <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>Grüssli</p>
</blockquote>
<p>Ich geh dann eher dazu über, die Bibliotheksklasse zu wrappen, da ich sowieso meist die Schnittstelle an meine Bedürfnisse anpassen muss - dann ist der private op= nur eine Fingerübung <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1741459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741459</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sun, 12 Jul 2009 12:27:20 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit (*Iterator) on Sun, 12 Jul 2009 12:34:02 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Ich geh dann eher dazu über, die Bibliotheksklasse zu wrappen, da ich sowieso meist die Schnittstelle an meine Bedürfnisse anpassen muss - dann ist der private op= nur eine Fingerübung <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>
</blockquote>
<p>Boost.Fusion wrappen ... öhm, wozu? Das ist ein TMP Tuple Boost.MPL Konstrukt. Nicht nur das es extrem Anpassungsfähig ist, es dürfte wohl auch recht viel Aufwand sein, das Zeug zu wrappen <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>Und also irgendwo hat es ja Grenzen. Eine Woche (vielleicht mehr?) einen Wrapper schreiben gegenüber einem simplen <code>disable warning</code> ?</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1741463</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741463</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 12 Jul 2009 12:34:02 GMT</pubDate></item></channel></rss>