<?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[Einfache Frage: const in class Definition]]></title><description><![CDATA[<p>Hallo NG,</p>
<p>ich möchte mir ein paar constanten definieren. Dazu würde ich in xyz.h gerne folgendes schreiben.</p>
<pre><code class="language-cpp">class Xyz{
public:

virtual int doSomething() = 0;
blah blah...
....

private:
const int VALUE = 0;
};
</code></pre>
<p>Der Compiler quittiert mir aber solche Versuche mit der Meldung:<br />
ISO C++ forbids initialization of member ‘CLOSED’</p>
<pre><code class="language-cpp">class Xyz{
public:

virtual int doSomething() = 0;
blah blah...
....

private:
const int VALUE;
};
</code></pre>
<p>quittiert er logischerweise mit uninitialized member ‘NetworkClientImpState::CLOSED’ with ‘const’ type ‘const int’</p>
<p>Grüße,<br />
M. Incani</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/204039/einfache-frage-const-in-class-definition</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 07:58:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/204039.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 29 Jan 2008 15:50:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Einfache Frage: const in class Definition on Tue, 29 Jan 2008 15:50:18 GMT]]></title><description><![CDATA[<p>Hallo NG,</p>
<p>ich möchte mir ein paar constanten definieren. Dazu würde ich in xyz.h gerne folgendes schreiben.</p>
<pre><code class="language-cpp">class Xyz{
public:

virtual int doSomething() = 0;
blah blah...
....

private:
const int VALUE = 0;
};
</code></pre>
<p>Der Compiler quittiert mir aber solche Versuche mit der Meldung:<br />
ISO C++ forbids initialization of member ‘CLOSED’</p>
<pre><code class="language-cpp">class Xyz{
public:

virtual int doSomething() = 0;
blah blah...
....

private:
const int VALUE;
};
</code></pre>
<p>quittiert er logischerweise mit uninitialized member ‘NetworkClientImpState::CLOSED’ with ‘const’ type ‘const int’</p>
<p>Grüße,<br />
M. Incani</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1445736</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1445736</guid><dc:creator><![CDATA[BlackPepper]]></dc:creator><pubDate>Tue, 29 Jan 2008 15:50:18 GMT</pubDate></item><item><title><![CDATA[Reply to Einfache Frage: const in class Definition on Tue, 29 Jan 2008 15:53:03 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class A
{
private:
   static const long VALUE = 7;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1445741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1445741</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Tue, 29 Jan 2008 15:53:03 GMT</pubDate></item><item><title><![CDATA[Reply to Einfache Frage: const in class Definition on Tue, 29 Jan 2008 15:57:23 GMT]]></title><description><![CDATA[<p>Danke das funktioniert. Aber warum muß das static sein?</p>
<p>Gruß,<br />
M. Incani</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1445745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1445745</guid><dc:creator><![CDATA[BlackPepper]]></dc:creator><pubDate>Tue, 29 Jan 2008 15:57:23 GMT</pubDate></item><item><title><![CDATA[Reply to Einfache Frage: const in class Definition on Tue, 29 Jan 2008 16:06:21 GMT]]></title><description><![CDATA[<p>BlackPepper schrieb:</p>
<blockquote>
<p>Danke das funktioniert. Aber warum muß das static sein?</p>
</blockquote>
<p>Die Zuweisung ist nur bei klassenbezogenen Konstanten auf diese weise möglich. Instanzbezogen initialisierst du in der Initialisierungsliste des Konstruktors.</p>
<p>Beide Fälle im Beispiel:</p>
<pre><code class="language-cpp">class A
{
  private:
    static const long constA = 4; // Sichtbarkeit: Klasse
    const long constB;            // Sichtbarkeit: Instanz

  public:
    A()
    : constB(4)
    {}
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1445752</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1445752</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 29 Jan 2008 16:06:21 GMT</pubDate></item><item><title><![CDATA[Reply to Einfache Frage: const in class Definition on Tue, 29 Jan 2008 16:08:39 GMT]]></title><description><![CDATA[<p>--- schon korrigiert von asc ---</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1445755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1445755</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Tue, 29 Jan 2008 16:08:39 GMT</pubDate></item><item><title><![CDATA[Reply to Einfache Frage: const in class Definition on Tue, 29 Jan 2008 20:16:45 GMT]]></title><description><![CDATA[<p>Warum es C++ verbietet weiss ich nicht, d.h. ich bin mir nicht sicher.</p>
<p>Ich gehe aber davon aus dass es verboten ist weil es keinen Sinn macht.<br />
Wenn nämlich der Wert einer Konstante für alle Instanzen einer Klasse gleich ist, dann ist das logisch betrachtet kein Member (=eins pro Instanz) sondern ein static Member (=eins für alle Instanzen).</p>
<p>Und da man nur Konstanten auf diese Art und Weise initialisieren kann deren Wert für alle Instanzen gleich ist (und die daher static sein sollten) ... macht es auch wenig Sinn diese Art der Initialisierung für nicht-static Konstanten zu erlauben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1445952</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1445952</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 29 Jan 2008 20:16:45 GMT</pubDate></item><item><title><![CDATA[Reply to Einfache Frage: const in class Definition on Wed, 30 Jan 2008 09:50:37 GMT]]></title><description><![CDATA[<p>Danke für Deine Erklärung. Das ist sehr einleutend. Man lernt ja nie aus.<br />
<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>Gruß,<br />
M. Incani</p>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Warum es C++ verbietet weiss ich nicht, d.h. ich bin mir nicht sicher.</p>
<p>Ich gehe aber davon aus dass es verboten ist weil es keinen Sinn macht.<br />
Wenn nämlich der Wert einer Konstante für alle Instanzen einer Klasse gleich ist, dann ist das logisch betrachtet kein Member (=eins pro Instanz) sondern ein static Member (=eins für alle Instanzen).</p>
<p>Und da man nur Konstanten auf diese Art und Weise initialisieren kann deren Wert für alle Instanzen gleich ist (und die daher static sein sollten) ... macht es auch wenig Sinn diese Art der Initialisierung für nicht-static Konstanten zu erlauben.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1446153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1446153</guid><dc:creator><![CDATA[BlackPepper]]></dc:creator><pubDate>Wed, 30 Jan 2008 09:50:37 GMT</pubDate></item></channel></rss>