<?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[Verständisproblem?]]></title><description><![CDATA[<p>Folgendes:</p>
<p>// A : funktioniert</p>
<pre><code class="language-cpp">CConfiguration::CModul *pFrom =m_pConfig-&gt;getModul(iFromMod);
double x= pFrom-&gt;m_PhyMod.m_dHandlerPosition;
</code></pre>
<p>// B: Funktioniert nicht</p>
<pre><code class="language-cpp">double x= (m_pConfig-&gt;getModul(iFromMod))-&gt;m_PhyMod.m_dHandlerPosition;
</code></pre>
<p>warum? ist doch das selbe????</p>
<p>Komischerweise kommt der Fehler:</p>
<pre><code>c:\test\AllocStruct\Transfer.h(132): error C2662: 'CConfiguration::getModul' : cannot convert 'this' pointer from 'const CConfiguration' to 'CConfiguration &amp;'
</code></pre>
<p>in der zeile:</p>
<pre><code class="language-cpp">CConfiguration::CModul *pFrom =m_pConfig-&gt;getModul(iFromMod);
</code></pre>
<p>Code der Funktion:</p>
<pre><code class="language-cpp">CConfiguration::CModul* CConfiguration::getModul(int iModul){

	for(int i=0; i&lt; m_aModul.GetSize(); i++){
		if(m_aModul.ElementAt(i).m_iModulNr==iModul)
			return &amp;(m_aModul.ElementAt(i));
	}
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/187116/verständisproblem</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 14:24:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/187116.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 16 Jul 2007 05:55:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verständisproblem? on Mon, 16 Jul 2007 06:06:01 GMT]]></title><description><![CDATA[<p>Folgendes:</p>
<p>// A : funktioniert</p>
<pre><code class="language-cpp">CConfiguration::CModul *pFrom =m_pConfig-&gt;getModul(iFromMod);
double x= pFrom-&gt;m_PhyMod.m_dHandlerPosition;
</code></pre>
<p>// B: Funktioniert nicht</p>
<pre><code class="language-cpp">double x= (m_pConfig-&gt;getModul(iFromMod))-&gt;m_PhyMod.m_dHandlerPosition;
</code></pre>
<p>warum? ist doch das selbe????</p>
<p>Komischerweise kommt der Fehler:</p>
<pre><code>c:\test\AllocStruct\Transfer.h(132): error C2662: 'CConfiguration::getModul' : cannot convert 'this' pointer from 'const CConfiguration' to 'CConfiguration &amp;'
</code></pre>
<p>in der zeile:</p>
<pre><code class="language-cpp">CConfiguration::CModul *pFrom =m_pConfig-&gt;getModul(iFromMod);
</code></pre>
<p>Code der Funktion:</p>
<pre><code class="language-cpp">CConfiguration::CModul* CConfiguration::getModul(int iModul){

	for(int i=0; i&lt; m_aModul.GetSize(); i++){
		if(m_aModul.ElementAt(i).m_iModulNr==iModul)
			return &amp;(m_aModul.ElementAt(i));
	}
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1326248</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326248</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 16 Jul 2007 06:06:01 GMT</pubDate></item><item><title><![CDATA[Reply to Verständisproblem? on Mon, 16 Jul 2007 06:09:06 GMT]]></title><description><![CDATA[<p>Es wäre nett, wenn du auch dazusagen könntest, was der Compiler an Version B auszusetzen hat <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>
<p>(edit: hat sich erledigt)</p>
<p>-----</p>
<p>Was denn nun? Welche Variante liefert denn nun den Fehler? Und bist du sicher, daß du nicht irgendwo unterwegs ein 'const' unterschlagen hast?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326251</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 16 Jul 2007 06:09:06 GMT</pubDate></item><item><title><![CDATA[Reply to Verständisproblem? on Mon, 16 Jul 2007 06:11:16 GMT]]></title><description><![CDATA[<p>das problem meldet er:</p>
<pre><code class="language-cpp">c:\test\AllocStruct\Transfer.h(137): error C2227: left of '-&gt;m_PhyMod' must point to class/struct/union
</code></pre>
<p>aber ist auch nur das sekundäre problem.. der error C2662 ist primär, solange der da ist, geht keiner der beiden Optionen..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326256</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 16 Jul 2007 06:11:16 GMT</pubDate></item><item><title><![CDATA[Reply to Verständisproblem? on Mon, 16 Jul 2007 06:37:51 GMT]]></title><description><![CDATA[<p>hola</p>
<p>in zeile</p>
<pre><code class="language-cpp">CConfiguration::CModul *pFrom =m_pConfig-&gt;getModul(iFromMod);
</code></pre>
<p>ist da m_pConfig vielleicht 'const' ?</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326262</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Mon, 16 Jul 2007 06:37:51 GMT</pubDate></item><item><title><![CDATA[Reply to Verständisproblem? on Mon, 16 Jul 2007 06:38:19 GMT]]></title><description><![CDATA[<p>Wie ist denn m_pConfig? definiert? (wenn das ein const-Zeiger ist, kannst du keine nicht-const Methoden darauf loslassen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326263</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 16 Jul 2007 06:38:19 GMT</pubDate></item><item><title><![CDATA[Reply to Verständisproblem? on Mon, 16 Jul 2007 06:44:56 GMT]]></title><description><![CDATA[<p>hey danke jungs..<br />
ja &quot;m_pConfig&quot; war const..jettz gehts .</p>
<p>ABER ich frage mich trozdem, wieso er meckert, da ich ja nur daten aus m_pConfig lese , und nichts schreibe...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326265</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 16 Jul 2007 06:44:56 GMT</pubDate></item><item><title><![CDATA[Reply to Verständisproblem? on Mon, 16 Jul 2007 06:49:27 GMT]]></title><description><![CDATA[<p>du liest zwar nur daraus, gibst aber einen nicht-const zeiger zurueck. der koennte dann aber versuchen an den daten rumzuschrauben.</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326270</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326270</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Mon, 16 Jul 2007 06:49:27 GMT</pubDate></item><item><title><![CDATA[Reply to Verständisproblem? on Mon, 16 Jul 2007 06:52:46 GMT]]></title><description><![CDATA[<p>hmm ok verstehe, würde ich aber nur die Funktion getModul() const machen?<br />
gibts wieder ein problem mit dem MFC CArray und ElementAt.. ich nehme an , weil die methode keine const zurück gibtt oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326272</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326272</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 16 Jul 2007 06:52:46 GMT</pubDate></item><item><title><![CDATA[Reply to Verständisproblem? on Mon, 16 Jul 2007 06:52:53 GMT]]></title><description><![CDATA[<p>OT: frage an die leute die sich da auskennen:</p>
<p>kann const-correctness was mit dem cpu-cache zu tun haben?</p>
<p>wenn der comiler weis, das nur gelesen werden kann, braucht er die daten in dem cache nicht in den speicher zurueckschreiben. wenn die memberfunktion jedoch nicht const ist, muss er eigendlich dafuer sorgen das die cache-line wieder in den speicher zurueckgeschrieben wird, bevor sie mit anderen daten ueberschrieben wird. kann das so zutreffen? is mir grad so durch den kopf gegangen.</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326273</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Mon, 16 Jul 2007 06:52:53 GMT</pubDate></item><item><title><![CDATA[Reply to Verständisproblem? on Mon, 16 Jul 2007 06:54:21 GMT]]></title><description><![CDATA[<p>dann schreibst die methoden einfach doppelt. einmal mit und einmal ohne 'const'.<br />
die const-deklarierte memberfunktion muss dann aber auch einen const-pointer zurueckgeben</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326275</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326275</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Mon, 16 Jul 2007 06:54:21 GMT</pubDate></item><item><title><![CDATA[Reply to Verständisproblem? on Mon, 16 Jul 2007 09:23:40 GMT]]></title><description><![CDATA[<p>Meep Meep schrieb:</p>
<blockquote>
<p>OT: frage an die leute die sich da auskennen:</p>
<p>kann const-correctness was mit dem cpu-cache zu tun haben?</p>
<p>wenn der comiler weis, das nur gelesen werden kann, braucht er die daten in dem cache nicht in den speicher zurueckschreiben. wenn die memberfunktion jedoch nicht const ist, muss er eigendlich dafuer sorgen das die cache-line wieder in den speicher zurueckgeschrieben wird, bevor sie mit anderen daten ueberschrieben wird. kann das so zutreffen? is mir grad so durch den kopf gegangen.</p>
</blockquote>
<p>Wenn sich das const nur auf eine Referenz/Pointer bezieht reicht es im Allgemeinen nicht für eine solche Optimierung, da es immer zusätzlich noch eine nicht-konstante Referenz geben könnte (Stichwort: Aliasing. Das const sagt nur, dass das dahinterliegende Objekt nicht über diese Referenz geändert wird. Eine andere non-const-Referenz hingegen kann das Objekt durchaus ändern) . Der Compiler müsste also schon eine komplette Analyse durchführen und deren Ergebnis ist dann letztlich unabhängig von der const-Deklaration.</p>
<p>Siehe auch:<br />
<a href="http://www.parashift.com/c++-faq-lite/const-correctness.html#faq-18.10" rel="nofollow">http://www.parashift.com/c++-faq-lite/const-correctness.html#faq-18.10</a><br />
<a href="http://www.parashift.com/c++-faq-lite/const-correctness.html#faq-18.14" rel="nofollow">http://www.parashift.com/c++-faq-lite/const-correctness.html#faq-18.14</a><br />
<a href="http://www.parashift.com/c++-faq-lite/const-correctness.html#faq-18.15" rel="nofollow">http://www.parashift.com/c++-faq-lite/const-correctness.html#faq-18.15</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326373</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326373</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Mon, 16 Jul 2007 09:23:40 GMT</pubDate></item></channel></rss>