<?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[Fehler nach Compiler-Update]]></title><description><![CDATA[<p>Ich hab MinGW geupdatet, allderdings lässt sich mein Projekt jetzt nicht mehr kompilieren. Es kommt (u.a.) folgender Fehler:</p>
<blockquote>
<p>g++ -O1 -g3 -Wall -c -fmessage-length=0 -o src\matrix.o ..\src\matrix.cpp<br />
In file included from ..\src\include/cpplapack.h:179:0,<br />
from ..\src\matrix.h:18,<br />
from ..\src\matrix.cpp:10:<br />
..\src\include/_dsymatrix-/_dsymatrix.hpp:9:23: Fehler: Referenz »m« kann nicht als »mutable« deklariert sein [-fpermissive]</p>
</blockquote>
<p>Folgende Code-Zeile ist Schuld:</p>
<pre><code>mutable long const&amp; m; //!&lt; matrix row size
</code></pre>
<p>Ich möchte anmerken, dass _dsymatrix.hpp Teil einer benutzen Bilbiothek und nicht von mir ist. Von daher bin ich recht verwundert, warum sich das Programm nicht mehr kompilieren lässt. Hat irgendwer Lösungsvorschläge?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/306123/fehler-nach-compiler-update</link><generator>RSS for Node</generator><lastBuildDate>Sat, 08 Aug 2026 05:25:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/306123.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 Jul 2012 17:44:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehler nach Compiler-Update on Wed, 18 Jul 2012 17:44:14 GMT]]></title><description><![CDATA[<p>Ich hab MinGW geupdatet, allderdings lässt sich mein Projekt jetzt nicht mehr kompilieren. Es kommt (u.a.) folgender Fehler:</p>
<blockquote>
<p>g++ -O1 -g3 -Wall -c -fmessage-length=0 -o src\matrix.o ..\src\matrix.cpp<br />
In file included from ..\src\include/cpplapack.h:179:0,<br />
from ..\src\matrix.h:18,<br />
from ..\src\matrix.cpp:10:<br />
..\src\include/_dsymatrix-/_dsymatrix.hpp:9:23: Fehler: Referenz »m« kann nicht als »mutable« deklariert sein [-fpermissive]</p>
</blockquote>
<p>Folgende Code-Zeile ist Schuld:</p>
<pre><code>mutable long const&amp; m; //!&lt; matrix row size
</code></pre>
<p>Ich möchte anmerken, dass _dsymatrix.hpp Teil einer benutzen Bilbiothek und nicht von mir ist. Von daher bin ich recht verwundert, warum sich das Programm nicht mehr kompilieren lässt. Hat irgendwer Lösungsvorschläge?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233871</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233871</guid><dc:creator><![CDATA[Ramanujan]]></dc:creator><pubDate>Wed, 18 Jul 2012 17:44:14 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler nach Compiler-Update on Wed, 18 Jul 2012 17:51:48 GMT]]></title><description><![CDATA[<p>const - Membervariablen können nicht mutable sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233872</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Wed, 18 Jul 2012 17:51:48 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler nach Compiler-Update on Wed, 18 Jul 2012 18:04:23 GMT]]></title><description><![CDATA[<p>Kann ich das mutable einfach entfernen oder riskiere ich, dass irgendetwas nicht mehr läuft?</p>
<p>Edit:<br />
Es gibt noch weitere Fehler und zwar der Art:</p>
<blockquote>
<p>..\src\matrix.cpp:559:26: Fehler: es gibt keine Argumente für »clock«, die von einem Templateparameter abhängen, weshalb eine Deklaration von »clock« verfügbar sein muss [-fpermissive]</p>
</blockquote>
<p>In jener Zeile steht folgendes:</p>
<pre><code class="language-cpp">timeMultiply_t0 = clock();
</code></pre>
<p>Inkudiert hab ich in jener Datei folgendes:</p>
<pre><code class="language-cpp">#include &lt;math.h&gt;
#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
#include &lt;fstream&gt;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2233875</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233875</guid><dc:creator><![CDATA[Ramanujan]]></dc:creator><pubDate>Wed, 18 Jul 2012 18:04:23 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler nach Compiler-Update on Wed, 18 Jul 2012 19:58:27 GMT]]></title><description><![CDATA[<p><code>mutable</code> ist dazu da, die physikalische constness für Variablen aufzuheben und daraus eine logische constness zu machen - so, dass selbst in cv-qualifizierten Membermethoden <code>mutable</code> Member verändert werden können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233878</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 18 Jul 2012 19:58:27 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler nach Compiler-Update on Wed, 18 Jul 2012 18:54:06 GMT]]></title><description><![CDATA[<p>Belli schrieb:</p>
<blockquote>
<p>const - Membervariablen können nicht mutable sein.</p>
</blockquote>
<p>Das Problem ist die Referenz, nicht das const. Das</p>
<pre><code class="language-cpp">struct a
{
        mutable int&amp; i;
        a(int&amp;i):i(i){}
};
</code></pre>
<p>liefert den gleichen Fehler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233884</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 18 Jul 2012 18:54:06 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler nach Compiler-Update on Wed, 18 Jul 2012 18:55:50 GMT]]></title><description><![CDATA[<p>Zwar ist die Kombination von mutable und const durchaus eine alberne, aber konkret geht es hier darum, dass mutable und Referenzen nicht zusammengehen, weil mutable dort schlicht nicht notwendig ist -- die Referenz selbst ist eh nicht änderbar, und das, was es referenziert, ist vom cv-Qualifier des umgebenden Objektes nicht betroffen. Das überrascht manche, aber</p>
<pre><code class="language-cpp">struct A {
  A(int &amp;x) : x(x) { }
  int &amp;x;
};

int main() {
  int n = 1;
  A const a(n);
  a.x = 2;
}
</code></pre>
<p>ist erlaubt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233886</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Wed, 18 Jul 2012 18:55:50 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler nach Compiler-Update on Wed, 18 Jul 2012 18:58:36 GMT]]></title><description><![CDATA[<p>Das bedeutet das keyword mutable überhaupt?</p>
<p>Den Fehler mit clock() hab ich gefunden:<br />
ich musste noch &lt;time.h&gt; inkludieren</p>
<p>Edit:<br />
Ok, mein Programm läuft wieder.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233887</guid><dc:creator><![CDATA[Ramanujan]]></dc:creator><pubDate>Wed, 18 Jul 2012 18:58:36 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler nach Compiler-Update on Wed, 18 Jul 2012 19:00:57 GMT]]></title><description><![CDATA[<p>Ramanujan schrieb:</p>
<blockquote>
<p>Das bedeutet das keyword mutable überhaupt?</p>
</blockquote>
<p>Das hab ich erklärt. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /><br />
Übrigens lieber <code>&lt;ctime&gt;</code> enbinden. Ok?</p>
<p>@seldon: Mich überrascht das kein bisschen. Was ist daran merkwürdig? <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/2233889</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233889</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 18 Jul 2012 19:00:57 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler nach Compiler-Update on Wed, 18 Jul 2012 19:23:58 GMT]]></title><description><![CDATA[<p>Ich hab es noch nicht genau verstanden:</p>
<p>Was bedeutet &quot;cv-qualifiziert&quot;?<br />
Was ist der Unterschied zwischen logischer und physikalischer constness?</p>
<p>[Hab es jetzt mit ctime statt time.h gemacht]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233899</guid><dc:creator><![CDATA[Ramanujan]]></dc:creator><pubDate>Wed, 18 Jul 2012 19:23:58 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler nach Compiler-Update on Wed, 18 Jul 2012 20:02:52 GMT]]></title><description><![CDATA[<p>Ramanujan schrieb:</p>
<blockquote>
<p>Was bedeutet &quot;cv-qualifiziert&quot;?</p>
</blockquote>
<p>Tut mir Leid. <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 />
Also, diese Funktion ist cv-qualifiziert:</p>
<pre><code class="language-cpp">class foo
{
    void bar() const {} //Kennste doch, oder?
};
</code></pre>
<p>Ramanujan schrieb:</p>
<blockquote>
<p>Was ist der Unterschied zwischen logischer und physikalischer constness?</p>
</blockquote>
<p>Ein Objekt ist physikalisch const, wenn sein Speicher komplett geschützt ist.<br />
Ein Objekt ist nur logisch const, wenn es zwar logisch gesehen nach dem Aufruf einer Funktion immer noch gleich ist, sein Speicher aber evt. verändert wurde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233902</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 18 Jul 2012 20:02:52 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler nach Compiler-Update on Wed, 18 Jul 2012 20:03:12 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>mutable ist dazu da, die physikalische constness auszuheben und daraus eine logische constness zu machen - so, dass selbst in cv-qualifizierten Membermethoden <code>mutable</code> Member verändert werden können. Diese Member sind aber nach aussen hin <code>const.</code></p>
</blockquote>
<p>Das heißt, dass auch in konstanten Methoden diese Member verändert werden können. Mit dem Unterschied von logischer und physischer Constness würde ich das jetzt nicht in Verbindung bringen. [EDIT: Ok, das passt schon. Hatte da eine andere Definition von physischer Constness im Kopf, nämlich die tatsächliche Unmöglichkeit der Veränderung des Wertes (Read-Only-Speicher, z.B.)]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233903</guid><dc:creator><![CDATA[Mr X]]></dc:creator><pubDate>Wed, 18 Jul 2012 20:03:12 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler nach Compiler-Update on Wed, 18 Jul 2012 20:01:52 GMT]]></title><description><![CDATA[<p>Mr X schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<p>mutable ist dazu da, die physikalische constness auszuheben und daraus eine logische constness zu machen - so, dass selbst in cv-qualifizierten Membermethoden <code>mutable</code> Member verändert werden können.</p>
</blockquote>
<p>Das heißt, dass auch in konstanten Methoden diese Member verändert werden können. Mit dem Unterschied von logischer und physikalischer Constness würde ich das jetzt nicht in Verbindung bringen.</p>
</blockquote>
<p>Findest du? Find ich nicht.</p>
<p>HIer wieso:</p>
<p>Wenn es keine mutable Member gibt, ist der Speicher der Klasse ja geschützt, damit ist das Object physikalisch const. Wenn es mutable Member gibt, existiert theoretisch nur noch die logische constness- der speicher kann teilweise auch für const-Objekte verändert werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233905</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 18 Jul 2012 20:01:52 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler nach Compiler-Update on Wed, 18 Jul 2012 20:06:12 GMT]]></title><description><![CDATA[<blockquote>
<p>Hatte da eine andere Definition von physischer Constness im Kopf, nämlich die tatsächliche Unmöglichkeit der Veränderung des Wertes (Read-Only-Speicher, z.B.)</p>
</blockquote>
<p>Und das ist die meinige <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="😕"
    /><br />
P.S.: Das mit den Funktionen ist soweit ich sehe quatsch. Ich hab da selbst was durcheinander gebracht.<br />
Die Funktion ist halt logisch const, wenn sie (wie ich sagte) nur den logischen Wert des Objektes nicht verändert, jedoch den physikalischen.<br />
Eine Funktion ist dagegen physikalisch const, <strong>wenn sie das Objekt gar nicht verändert.</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233906</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 18 Jul 2012 20:06:12 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler nach Compiler-Update on Wed, 18 Jul 2012 20:06:04 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Mr X schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<p>mutable ist dazu da, die physikalische constness auszuheben und daraus eine logische constness zu machen - so, dass selbst in cv-qualifizierten Membermethoden <code>mutable</code> Member verändert werden können.</p>
</blockquote>
<p>Das heißt, dass auch in konstanten Methoden diese Member verändert werden können. Mit dem Unterschied von logischer und physikalischer Constness würde ich das jetzt nicht in Verbindung bringen.</p>
</blockquote>
<p>Findest du? Find ich nicht.</p>
<p>HIer wieso:</p>
<p>Wenn es keine mutable Member gibt, ist der Speicher der Klasse ja geschützt, damit ist das Object physikalisch const. Wenn es mutable Member gibt, existiert theoretisch nur noch die logische constness- der speicher kann teilweise auch für const-Objekte verändert werden.</p>
</blockquote>
<p>Während Du das geschrieben hast, habe ich da noch eine Anmerkung in meinen Beitrag hineineditiert. Hatte eine andere Definition von phyischer/logischer Konstanz im Kopf. Allerdings muss man bei deiner Definition eines bedenken: Es ist möglich, den Speicherinhalt (wenn auch nur mit üblen Hacks) zu verändern, selbst wenn das Objekt physisch Konstant ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233907</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233907</guid><dc:creator><![CDATA[Mr X]]></dc:creator><pubDate>Wed, 18 Jul 2012 20:06:04 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler nach Compiler-Update on Wed, 18 Jul 2012 20:07:05 GMT]]></title><description><![CDATA[<p>Mr X schrieb:</p>
<blockquote>
<p>Allerdings muss man bei deiner Definition eines bedenken: Es ist möglich, den Speicherinhalt (wenn auch nur mit üblen Hacks) zu verändern, selbst wenn das Objekt physisch Konstant ist.</p>
</blockquote>
<p>Das wusste ich nicht. Erzähl. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233908</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 18 Jul 2012 20:07:05 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler nach Compiler-Update on Wed, 18 Jul 2012 20:08:41 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<blockquote>
<p>Hatte da eine andere Definition von physischer Constness im Kopf, nämlich die tatsächliche Unmöglichkeit der Veränderung des Wertes (Read-Only-Speicher, z.B.)</p>
</blockquote>
<p>Und das ist die meinige <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="😕"
    /><br />
P.S.: Das mit den Funktionen ist soweit ich sehe quatsch. Ich hab da selbst was durcheinander gebracht.<br />
Die Funktion ist halt logisch const, wenn sie (wie ich sagte) nur den logischen Wert des Objektes nicht verändert, jedoch den physikalischen.<br />
Eine Funktion ist dagegen physikalisch const, <strong>wenn sie das Objekt gar nicht verändert.</strong></p>
</blockquote>
<p>Nun, ich dachte eher, du definierst es so:<br />
physische Konstanz: Der Speicherinhalt bleibt unverändert.<br />
logische Konstanz: Das Objekt &quot;sieht&quot; von außen gleich aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233909</guid><dc:creator><![CDATA[Mr X]]></dc:creator><pubDate>Wed, 18 Jul 2012 20:08:41 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler nach Compiler-Update on Wed, 18 Jul 2012 20:11:20 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Mr X schrieb:</p>
<blockquote>
<p>Allerdings muss man bei deiner Definition eines bedenken: Es ist möglich, den Speicherinhalt (wenn auch nur mit üblen Hacks) zu verändern, selbst wenn das Objekt physisch Konstant ist.</p>
</blockquote>
<p>Das wusste ich nicht. Erzähl. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
</blockquote>
<p>Ohne es getestet zu haben:</p>
<pre><code class="language-cpp">const int i = 5;
int* p = (int*)&amp;i;
*p = 6;
std::cout &lt;&lt; i;
</code></pre>
<p>Das _kann_ ein Exception auslösen, muss es aber nicht. Hängt vom Compiler/Laufzeitumgebung ab. Es kann auch 6 rauskommen.</p>
<p>Das gleiche kannst Du auch in cv-Methoden tun, indem du den this-Zeiger castest. Das dabei eine Ausnahme geworfen wird, halte ich übrigens für eher unwahrscheinlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233910</guid><dc:creator><![CDATA[Mr X]]></dc:creator><pubDate>Wed, 18 Jul 2012 20:11:20 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler nach Compiler-Update on Wed, 18 Jul 2012 20:11:21 GMT]]></title><description><![CDATA[<p>Mr X schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<blockquote>
<p>Hatte da eine andere Definition von physischer Constness im Kopf, nämlich die tatsächliche Unmöglichkeit der Veränderung des Wertes (Read-Only-Speicher, z.B.)</p>
</blockquote>
<p>Und das ist die meinige <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="😕"
    /><br />
P.S.: Das mit den Funktionen ist soweit ich sehe quatsch. Ich hab da selbst was durcheinander gebracht.<br />
Die Funktion ist halt logisch const, wenn sie (wie ich sagte) nur den logischen Wert des Objektes nicht verändert, jedoch den physikalischen.<br />
Eine Funktion ist dagegen physikalisch const, <strong>wenn sie das Objekt gar nicht verändert.</strong></p>
</blockquote>
<p>Nun, ich dachte eher, du definierst es so:<br />
physische Konstanz: Der Speicherinhalt bleibt unverändert.<br />
logische Konstanz: Das Objekt &quot;sieht&quot; von außen gleich aus.</p>
</blockquote>
<p>Ja, so definiere ich es. Für Objekte. Für Funktionen wie oben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233911</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 18 Jul 2012 20:11:21 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler nach Compiler-Update on Wed, 18 Jul 2012 20:12:08 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Mr X schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<blockquote>
<p>Hatte da eine andere Definition von physischer Constness im Kopf, nämlich die tatsächliche Unmöglichkeit der Veränderung des Wertes (Read-Only-Speicher, z.B.)</p>
</blockquote>
<p>Und das ist die meinige <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="😕"
    /><br />
P.S.: Das mit den Funktionen ist soweit ich sehe quatsch. Ich hab da selbst was durcheinander gebracht.<br />
Die Funktion ist halt logisch const, wenn sie (wie ich sagte) nur den logischen Wert des Objektes nicht verändert, jedoch den physikalischen.<br />
Eine Funktion ist dagegen physikalisch const, <strong>wenn sie das Objekt gar nicht verändert.</strong></p>
</blockquote>
<p>Nun, ich dachte eher, du definierst es so:<br />
physische Konstanz: Der Speicherinhalt bleibt unverändert.<br />
logische Konstanz: Das Objekt &quot;sieht&quot; von außen gleich aus.</p>
</blockquote>
<p>Ja, so definiere ich es. Für Objekte. Für Funktionen wie oben.</p>
</blockquote>
<p>Genau. Dann passt deine Bemerkung von oben ja auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233912</guid><dc:creator><![CDATA[Mr X]]></dc:creator><pubDate>Wed, 18 Jul 2012 20:12:08 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler nach Compiler-Update on Wed, 18 Jul 2012 20:18:49 GMT]]></title><description><![CDATA[<p>Cool! Der GCC macht es irgendwie komisch, er ignoriert die Anweisung komplett:</p>
<pre><code class="language-cpp">const int i = 5;
int* p = (int*)&amp;i;
*p = 6;
std::cout &lt;&lt; i; //Ausgabe: 5
</code></pre>
<p>Dasselbe bei meinem Hack:</p>
<pre><code class="language-cpp">int const a(5);

        memset(const_cast&lt;void*&gt;(reinterpret_cast&lt;void const*&gt;(&amp;a)), 0, sizeof (a));

        std::cout &lt;&lt; a &lt;&lt; '\n'; // 5
</code></pre>
<p>Mr X schrieb:</p>
<blockquote>
<p>Genau. Dann passt deine Bemerkung von oben ja auch.</p>
</blockquote>
<p>Puah, schön dass das jetzt endlich geklärt ist <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233913</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 18 Jul 2012 20:18:49 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler nach Compiler-Update on Wed, 18 Jul 2012 20:15:03 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Cool! Der GCC macht es irgendwie komisch, er ignoriert die Anweisung komplett:</p>
<pre><code class="language-cpp">const int i = 5;
int* p = (int*)&amp;i;
*p = 6;
std::cout &lt;&lt; i; //Ausgabe: 5
</code></pre>
<p>Dasselbe bei meinem Hack:</p>
<pre><code class="language-cpp">int const a(5);

        memset(const_cast&lt;void*&gt;(reinterpret_cast&lt;void const*&gt;(&amp;a)), 0, sizeof (a));

        std::cout &lt;&lt; a &lt;&lt; '\n'; // 5
</code></pre>
</blockquote>
<p>Das sieht so aus, also hat er die Konstante wegoptimiert. Ich probiers mal selbst aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233914</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233914</guid><dc:creator><![CDATA[Mr X]]></dc:creator><pubDate>Wed, 18 Jul 2012 20:15:03 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler nach Compiler-Update on Wed, 18 Jul 2012 20:21:18 GMT]]></title><description><![CDATA[<p><s>Im MSVC gehts, da kommt 6 raus.</s> Nein. Mein Fehler. Er wirft eine Ausnahme. Die Compiler sind sicherer, als ich gedacht habe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233915</guid><dc:creator><![CDATA[Mr X]]></dc:creator><pubDate>Wed, 18 Jul 2012 20:21:18 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler nach Compiler-Update on Wed, 18 Jul 2012 20:19:03 GMT]]></title><description><![CDATA[<p><strong>An den TE</strong>: Ich hoffe, dein Problem mit mutable hat sich gelöst. Also nochmal: Mit mutable deklarierte Member dürfen auch in const-qualifizierten Funktionen verändert werden. Es kann also sein, dass in deinem Code vereinfacht folgendes steht:</p>
<pre><code class="language-cpp">class FrameworkBla
{
        mutable size_t counter;

        FrameworkBla():
        counter(0) {}

        void eine_Logisch_Konstante_Funktion() const
        {
                ++counter;//Hier wird counter verändert, obwohl die Instanz ja const ist! Ohne mutable wird es also einen einfachen semantischen Fehler geben.
                ........
        }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2233916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233916</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 18 Jul 2012 20:19:03 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler nach Compiler-Update on Wed, 18 Jul 2012 20:20:17 GMT]]></title><description><![CDATA[<p>Was mich noch verwirrt: Sekunde mal! Wenn du deinen Compiler geupdatet hast, heißt das ja, dass der diesen falschen Code vorher geschluckt hat! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /></p>
<p>Notiz an mich: Dringend meinen GCC updaten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233917</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 18 Jul 2012 20:20:17 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler nach Compiler-Update on Wed, 18 Jul 2012 20:24:54 GMT]]></title><description><![CDATA[<p>So, jetzt hab ichs aber hingekriegt (Die Spielerei mit dem this-Zeiger funktioniert; Da gibts keine Exception und der Compiler (MSVC) funkt auch nicht dazwischen.):</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

struct C {
	int i;
	C() : i(5) {}
	void foo() const {
		C* c = (C*)this;
		c-&gt;i = 6;
	}
};

int main() {
	C c;
	c.foo();
	std::cout &lt;&lt; c.i;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2233918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233918</guid><dc:creator><![CDATA[Mr X]]></dc:creator><pubDate>Wed, 18 Jul 2012 20:24:54 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler nach Compiler-Update on Wed, 18 Jul 2012 20:47:06 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;

struct C {
	int i;
	C() : i(5) {}
	void foo() const {
		C* c = (C*)this;
		c-&gt;i = 6;
	}
};

int main() {
	C c;
	c.foo();
	std::cout &lt;&lt; c.i;
}
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> Nochmal um das klarzustellen: Auf keinen Fall benutzen! Das ist UB und sehr unelegant. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233921</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 18 Jul 2012 20:47:06 GMT</pubDate></item></channel></rss>