<?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[for vs. for each]]></title><description><![CDATA[<p>Hallo,<br />
Ich habe ein Problem mit einer for each Schleife.<br />
Diese stürzt bei Ausführung als Release in der ersten Zeile ab.<br />
Als Debug funktioniert alles einwandfrei. Auch die Werte stimmen.</p>
<p>Der Code wird in einer Funktion eines Objektes Ausgeführt.</p>
<pre><code>for each (HwType type in hardwareInfo.setup)//in dieser Zeile stürzt er ab
{
	config.addChannel(type.Value).enabled);
}
</code></pre>
<p>hardwareInfo ist vom Typ CCHardwareInfo und ist ein private Attribut des Objekts, in dem auch die Funktion ausgeführt wird.</p>
<p>hardwareInfo und HwType sind wie folgt in einer header definiert:</p>
<pre><code>class CCHardwareInfo
{
public:	
	bool save;	//save setup
	bool reload;	//reload setup
	vector&lt;hwType&gt; setup;
	string ident;	//Identstring
};

struct HwType
{
	HwType(short Id)
	{
		typeId   = Id;
		value	 = 0;
		currency = 0;
	}

	short		typeId;	
	unsigned long	value;	
	short		currency;
};
</code></pre>
<p>Ersetze ich die for each-Schleife durch eine for-Schleife in folgender Weise<br />
funktioniert es einwandfrei. Wie kann das sein?</p>
<pre><code>for(int i=0; i&lt;hardwareInfo.setup.size(); i++)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/324132/for-vs-for-each</link><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Jul 2026 20:27:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/324132.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 04 Mar 2014 14:39:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to for vs. for each on Fri, 07 Mar 2014 09:04:59 GMT]]></title><description><![CDATA[<p>Hallo,<br />
Ich habe ein Problem mit einer for each Schleife.<br />
Diese stürzt bei Ausführung als Release in der ersten Zeile ab.<br />
Als Debug funktioniert alles einwandfrei. Auch die Werte stimmen.</p>
<p>Der Code wird in einer Funktion eines Objektes Ausgeführt.</p>
<pre><code>for each (HwType type in hardwareInfo.setup)//in dieser Zeile stürzt er ab
{
	config.addChannel(type.Value).enabled);
}
</code></pre>
<p>hardwareInfo ist vom Typ CCHardwareInfo und ist ein private Attribut des Objekts, in dem auch die Funktion ausgeführt wird.</p>
<p>hardwareInfo und HwType sind wie folgt in einer header definiert:</p>
<pre><code>class CCHardwareInfo
{
public:	
	bool save;	//save setup
	bool reload;	//reload setup
	vector&lt;hwType&gt; setup;
	string ident;	//Identstring
};

struct HwType
{
	HwType(short Id)
	{
		typeId   = Id;
		value	 = 0;
		currency = 0;
	}

	short		typeId;	
	unsigned long	value;	
	short		currency;
};
</code></pre>
<p>Ersetze ich die for each-Schleife durch eine for-Schleife in folgender Weise<br />
funktioniert es einwandfrei. Wie kann das sein?</p>
<pre><code>for(int i=0; i&lt;hardwareInfo.setup.size(); i++)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2386523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386523</guid><dc:creator><![CDATA[claine]]></dc:creator><pubDate>Fri, 07 Mar 2014 09:04:59 GMT</pubDate></item><item><title><![CDATA[Reply to for vs. for each on Tue, 04 Mar 2014 14:42:47 GMT]]></title><description><![CDATA[<p>Es gibt keine for each Schleife in C++.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386526</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Tue, 04 Mar 2014 14:42:47 GMT</pubDate></item><item><title><![CDATA[Reply to for vs. for each on Tue, 04 Mar 2014 15:12:25 GMT]]></title><description><![CDATA[<p>Abgesehen von dem for each, was es nur beim Microsoft-Compiler gibt, ist dein Code syntaktisch falsch, vermutlich Tippfehler. hwType vs. HwType, falsche Klammerung, vielleicht noch mehr? Auf der Basis kann man kaum erkennen, was das Problem sein könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386535</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Tue, 04 Mar 2014 15:12:25 GMT</pubDate></item><item><title><![CDATA[Reply to for vs. for each on Tue, 04 Mar 2014 15:43:20 GMT]]></title><description><![CDATA[<p>Und vor allem passt der Code hinten und vorne nicht zusammen:<br />
1.- ist das kein privater Member der Klasse in der die Funktion ist, wie du sagst.<br />
2.- Bei der &quot;normalen&quot; For Schleife sagst du irgendwas von billSetup, das ist da aber nicht definiert/deklariert.</p>
<p>Zu deinem Problem:<br />
Die Range-Based For Schleife aus C++ setzt auf begin() und end() auf. Das bedeutet im Umkehrschluss, sie kann niemals ausserhalb der Arraygrenzen zugreifen, da du auf den eigentlichen Iterator nichtmals Zugriff hast (was ja auch gut so ist).</p>
<pre><code>vector&lt;int&gt; vec = { ... };

for(int i : vec) // oder int &amp; i, oder const int&amp; oder oder)
{
     i += 10; // kann niemals schiefgehen
}
</code></pre>
<p>Problematisch wird das mit Zeigern:</p>
<pre><code>vector&lt;int&gt; * vec = getVector();

for(int i : *vec)
{
    i += 10;
}
</code></pre>
<p>Denn was ist, wenn die Funktion in dem Beispiel einen nullptr zurückgibt?<br />
Richtig Absturz, gewöhnlich.</p>
<p>Wenn das bei dir ausgeschlossen sein sollte, dann hast du an ganz anderer Stelle Fehler gemacht (z.B. einen nullptr aus einer Funktion bekommen und damit gearbeitet, aber deine IDE hat den Fehler nicht gemeldet)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386546</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Tue, 04 Mar 2014 15:43:20 GMT</pubDate></item><item><title><![CDATA[Reply to for vs. for each on Tue, 04 Mar 2014 23:03:40 GMT]]></title><description><![CDATA[<blockquote>
<p>Es gibt keine for each Schleife in C++.</p>
</blockquote>
<p>Also eigentlich schon (zumindest mit _) <a href="http://www.cplusplus.com/reference/algorithm/for_each/" rel="nofollow">http://www.cplusplus.com/reference/algorithm/for_each/</a> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386691</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386691</guid><dc:creator><![CDATA[tröröö]]></dc:creator><pubDate>Tue, 04 Mar 2014 23:03:40 GMT</pubDate></item><item><title><![CDATA[Reply to for vs. for each on Tue, 04 Mar 2014 23:08:13 GMT]]></title><description><![CDATA[<p>tröröö schrieb:</p>
<blockquote>
<blockquote>
<p>Es gibt keine for each Schleife in C++.</p>
</blockquote>
<p>Also eigentlich schon (zumindest mit _) <a href="http://www.cplusplus.com/reference/algorithm/for_each/" rel="nofollow">http://www.cplusplus.com/reference/algorithm/for_each/</a> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Hast du heute noch nicht genug dummes Zeug geschrieben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386692</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Tue, 04 Mar 2014 23:08:13 GMT</pubDate></item><item><title><![CDATA[Reply to for vs. for each on Wed, 05 Mar 2014 07:55:14 GMT]]></title><description><![CDATA[<p>Machst du oft Einträge, die absolut echt null Inhalt haben? Dir ist schon klar, dass dein letzter Eintrag nur Spam war, oder? Wenn du es besser weißt, schreibs rein. Und vor allem: da brichst du dir nichts ab, dich in einem Forum zu registrieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386714</guid><dc:creator><![CDATA[tröröö]]></dc:creator><pubDate>Wed, 05 Mar 2014 07:55:14 GMT</pubDate></item><item><title><![CDATA[Reply to for vs. for each on Wed, 05 Mar 2014 08:09:54 GMT]]></title><description><![CDATA[<p>Du wirst doch wohl kein <code>using namespace std</code> im Header haben? Das ist ganz böse. Im Header solltest Du immer mit voll qualifizierten Namen wie <code>std::vector</code> und <code>std::string</code> arbeiten. Der Einheitlichkeit halber empfehle ich das auch im cpp. Aber da gehen die Meinungen auseinander.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386718</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Wed, 05 Mar 2014 08:09:54 GMT</pubDate></item><item><title><![CDATA[Reply to for vs. for each on Wed, 05 Mar 2014 10:21:24 GMT]]></title><description><![CDATA[<blockquote>
<p>Im Header solltest Du immer mit voll qualifizierten Namen wie std::vector und std::string arbeiten.</p>
</blockquote>
<p>Nö, im Header schreibst du die <code>using</code> -Direktive einfach in die Funktionen rein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386750</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386750</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Wed, 05 Mar 2014 10:21:24 GMT</pubDate></item><item><title><![CDATA[Reply to for vs. for each on Wed, 05 Mar 2014 11:20:44 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<blockquote>
<p>Im Header solltest Du immer mit voll qualifizierten Namen wie std::vector und std::string arbeiten.</p>
</blockquote>
<p>Nö, im Header schreibst du die <code>using</code> -Direktive einfach in die Funktionen rein.</p>
</blockquote>
<p>Manchmal nervt deine Spitzfindigkeit einfach nur. Der Ratschlag von tntnet ist schon ganz gut, er schreibt ja auch man <em>sollte</em>, nicht man <em>muss</em>. Das lässt Spielraum für Sonderfälle, z.B. wenn man im Header tatsächlich Funktionen implementiert statt sie nur zu deklarieren. Und erklär´ mir bitte doch mal, wie man <em>using namespace std;</em> oder <em>using std::string</em> für folgende Funktion einsetzen soll:</p>
<pre><code>std::string do_something( SomeType MyType )
{
   ...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2386770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386770</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Wed, 05 Mar 2014 11:20:44 GMT</pubDate></item><item><title><![CDATA[Reply to for vs. for each on Wed, 05 Mar 2014 12:03:37 GMT]]></title><description><![CDATA[<p>Edit: Gut, das war offensichtlich zu spitzfindig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386788</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Wed, 05 Mar 2014 12:03:37 GMT</pubDate></item><item><title><![CDATA[Reply to for vs. for each on Fri, 07 Mar 2014 09:10:33 GMT]]></title><description><![CDATA[<p>Hallo,<br />
Hatte leider 2 Fehler im Code, habe ich jetzt behoben. in der for-Schleife muss es natürlich auch setup sein und nicht billSetup. Und der Construktor soll HwType heißen.</p>
<p>Ich habe den Code möglichst kurz gehalten, damit man nicht unnötig viel lesen muss.</p>
<p>hardwareInfo ist ein private Member der Klasse in der die Funktion ausgeführt wird.<br />
ich kann auch in der Funktion darauf zugreifen, habe ich ausgiebig getestet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2387327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2387327</guid><dc:creator><![CDATA[claine]]></dc:creator><pubDate>Fri, 07 Mar 2014 09:10:33 GMT</pubDate></item><item><title><![CDATA[Reply to for vs. for each on Fri, 07 Mar 2014 10:12:38 GMT]]></title><description><![CDATA[<p>Das mit</p>
<pre><code>using namespace std
</code></pre>
<p>hatte ich allerdings. War aber nicht die Ursache..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2387349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2387349</guid><dc:creator><![CDATA[claine]]></dc:creator><pubDate>Fri, 07 Mar 2014 10:12:38 GMT</pubDate></item></channel></rss>