<?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[static const member_]]></title><description><![CDATA[<p>Hello</p>
<p>Ich möchte in einer abstrakten Basisklasse eine const definieren, die aber in jeweiligen Vererbungen einen anderen Wert hat. Wie muss ich das machen?</p>
<pre><code class="language-cpp">class ExampleBase
{
...
private:
    static const int max = 0;
...
}

class Example: public ExampleBase
{
...
private:
    static const int max = 100;
...
}
</code></pre>
<p>Danke schonmal</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/155311/static-const-member_</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 10:28:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/155311.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 04 Aug 2006 15:54:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to static const member_ on Fri, 04 Aug 2006 15:54:49 GMT]]></title><description><![CDATA[<p>Hello</p>
<p>Ich möchte in einer abstrakten Basisklasse eine const definieren, die aber in jeweiligen Vererbungen einen anderen Wert hat. Wie muss ich das machen?</p>
<pre><code class="language-cpp">class ExampleBase
{
...
private:
    static const int max = 0;
...
}

class Example: public ExampleBase
{
...
private:
    static const int max = 100;
...
}
</code></pre>
<p>Danke schonmal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1110661</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110661</guid><dc:creator><![CDATA[Statiker]]></dc:creator><pubDate>Fri, 04 Aug 2006 15:54:49 GMT</pubDate></item><item><title><![CDATA[Reply to static const member_ on Fri, 04 Aug 2006 16:23:13 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class ExampleBase
{
...
private:
    static const int max = 0;
...
};
const int ExampleBase::max =0;
...

class Example: public ExampleBase
{
...
private:
    static const int max = 100;
...
};
const int Example::max =1000;
...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1110679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110679</guid><dc:creator><![CDATA[Cpt. Tanga]]></dc:creator><pubDate>Fri, 04 Aug 2006 16:23:13 GMT</pubDate></item><item><title><![CDATA[Reply to static const member_ on Fri, 04 Aug 2006 19:37:14 GMT]]></title><description><![CDATA[<p>Kapier ich nicht.<br />
Du änderst da ja nochmal den Wert der Kosntanten <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/1110791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110791</guid><dc:creator><![CDATA[Statiker]]></dc:creator><pubDate>Fri, 04 Aug 2006 19:37:14 GMT</pubDate></item><item><title><![CDATA[Reply to static const member_ on Fri, 04 Aug 2006 21:07:40 GMT]]></title><description><![CDATA[<p>ups sorry hatte deinen code nur abkopiert und was dazu geschrieben. muss natürlich sohier aussehen:</p>
<pre><code class="language-cpp">class ExampleBase
{
...
private:
    static const int max;
...
};
const int ExampleBase::max =0;
...

class Example: public ExampleBase
{
...
private:
    static const int max;
...
};
const int Example::max =1000;
...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1110826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110826</guid><dc:creator><![CDATA[Cpt. Tanga]]></dc:creator><pubDate>Fri, 04 Aug 2006 21:07:40 GMT</pubDate></item><item><title><![CDATA[Reply to static const member_ on Fri, 04 Aug 2006 21:34:10 GMT]]></title><description><![CDATA[<p>@Cpt.Tanga</p>
<p>nein, da sist so nicht richtig. Das was du machst ist genau dasselbe, was der threadstarter tut. bei static const sind diese vorortwertzuweisungen durchaus möglich. nichtsdestotrotz ändert sich dadurch nicht das verhalten(bin ich mir aber nicht ganz sicher, ob der compiler hier nicht böse fehlermeldungen wirft)</p>
<p>@Threadstarter<br />
wenn du willst, dass dann methoden aus der Basisklasse zugriff auf den veränderten wert haben sollen, so ist das nicht möglich. static const ist typ gebunden, bzw compile time constant. da kann eine abgeleitete Klasse nichts daran ändern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1110844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110844</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Fri, 04 Aug 2006 21:34:10 GMT</pubDate></item><item><title><![CDATA[Reply to static const member_ on Fri, 04 Aug 2006 21:35:14 GMT]]></title><description><![CDATA[<p>Ein standardkonformer Compiler benötigt keine separate Definition von Konstanten. Innerhalb der Klasse definieren und initialisieren genügt.</p>
<p>EDIT: lahm <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/1110846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110846</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 04 Aug 2006 21:35:14 GMT</pubDate></item><item><title><![CDATA[Reply to static const member_ on Sat, 05 Aug 2006 08:20:51 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Ein standardkonformer Compiler benötigt keine separate Definition von Konstanten. Innerhalb der Klasse definieren und initialisieren genügt.</p>
</blockquote>
<p>Das stimmt so nicht. Ob eine Definition nötig ist, hängt vom Client-Code ab. Wird z.B. irgendwo die Adresse der Konstanten gebildet, wird auch eine separate Definition benötigt. Andernfalls wird spätestens der Linker ein &quot;undefined external symbol&quot; melden.</p>
<p>Wenn man also nicht genau weiß, wie die Konstante verwendet wird, schreibt man am Besten:</p>
<pre><code class="language-cpp">struct X {
    static const int i = 22;
};

// in einer cpp-Datei
const int X::i; // -&gt; Definition ohne Initialisierung, da i bereits einen Wert hat
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1110903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110903</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Sat, 05 Aug 2006 08:20:51 GMT</pubDate></item><item><title><![CDATA[Reply to static const member_ on Sat, 05 Aug 2006 15:35:59 GMT]]></title><description><![CDATA[<p>Sry, ich kapiers nicht ganz.<br />
Ich möchte einfach einen Klassenspezifischen, festen Wert setzten, einen Faktor für Berechnungen.<br />
Da ich nun die polymorphen Objekte mit Zeigern auf die Basisklasse bearbeite, muss ich den Faktor ja überladen, oder?</p>
<p>Also in Pseudo etwa so:</p>
<pre><code class="language-cpp">class AbstractBase
{
    ...
    (const?) int factor = 0
    ...
}

class Derivate1: public AbstractBase
{
    ...
    const? int factor = 12
    ..
}

class Derivate2: public AbstractBase
{
    ...
    const? int factor = 15
    ...
}
...
main()
{
    ...
    int x = 2   // per User Eingabe
    foreach( AbstractBase* Obj )
    {
        int y = x * Obj-&gt;factor
        print y
    }
    ...
}
</code></pre>
<p>Soll nun für Derivate1 24 ausgeben und für Derivate2 30 etc..<br />
Geht sowas überhaupt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1111144</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1111144</guid><dc:creator><![CDATA[Statiker]]></dc:creator><pubDate>Sat, 05 Aug 2006 15:35:59 GMT</pubDate></item><item><title><![CDATA[Reply to static const member_ on Sat, 05 Aug 2006 16:00:10 GMT]]></title><description><![CDATA[<p>Statiker schrieb:</p>
<blockquote>
<p>Ich möchte einfach einen Klassenspezifischen, festen Wert setzten, einen Faktor für Berechnungen.<br />
[...]<br />
Geht sowas überhaupt?</p>
</blockquote>
<p>Nicht so wie du es gemacht hast. Subtyping Polymorphie bezieht sich auf Verhalten (Funktionen) nicht auf Daten.<br />
Du kannst also z.B. aus factor einfach eine virtuelle Funktion machen:</p>
<pre><code class="language-cpp">class AbstractBase {
public:
    virtual int factor() const { return 0; }
}

class Derivate1: public AbstractBase
{
    virtual int factor() const { return 12; }
}
...
main()
{
    ...
    int x = 2   // per User Eingabe
    foreach( AbstractBase* Obj )
    {
        int y = x * Obj-&gt;factor()
        print y
    }
    ...
}
</code></pre>
<p>Eine andere Alternative wäre des setzen des Faktors im Konstruktor:</p>
<pre><code class="language-cpp">class AbstractBase {
public:
    AbstractBase() : factor(0) {}
    const int factor;
protected:
    AbstractBase(int f) : factor(f) {}

}

class Derivate1: public AbstractBase
{
public:
  Derivate1() : AbstractBase(12) {}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1111155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1111155</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Sat, 05 Aug 2006 16:00:10 GMT</pubDate></item></channel></rss>