<?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[Statische Klassenkonstante von Basisklasse in Subklasse verwenden]]></title><description><![CDATA[<p>Hallo Leute,<br />
ich habe folgendes Problem: Ich habge in einer abstrakten Basisklasse Konstanten definiert; jetzt will ich in einer abgeleiteten Klasse eine Switch-Anweisung implementieren, wobei ich als &quot;case&quot; auf die Konstante der Basisklasse zugreife; jedoch kommt die fehlermeldung, dass der case-ausdruck konstant sein muss; hat dafür jemand ne erklärung??</p>
<pre><code class="language-cpp">// Abstract class Base
class Base {
public:  
  static unsigned char const _EOF; // Wird im .cpp file initialisiert
};

// Concrete class Derived
class Derived : public Base {
  void doIt() {
    ch = readCharFromInput();
    switch (ch) {
    case Base::_EOF: // do something
    }
  }
};
</code></pre>
<p>thx, MrGentleman</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/219088/statische-klassenkonstante-von-basisklasse-in-subklasse-verwenden</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 08:28:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/219088.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 29 Jul 2008 17:26:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Statische Klassenkonstante von Basisklasse in Subklasse verwenden on Tue, 29 Jul 2008 17:26:04 GMT]]></title><description><![CDATA[<p>Hallo Leute,<br />
ich habe folgendes Problem: Ich habge in einer abstrakten Basisklasse Konstanten definiert; jetzt will ich in einer abgeleiteten Klasse eine Switch-Anweisung implementieren, wobei ich als &quot;case&quot; auf die Konstante der Basisklasse zugreife; jedoch kommt die fehlermeldung, dass der case-ausdruck konstant sein muss; hat dafür jemand ne erklärung??</p>
<pre><code class="language-cpp">// Abstract class Base
class Base {
public:  
  static unsigned char const _EOF; // Wird im .cpp file initialisiert
};

// Concrete class Derived
class Derived : public Base {
  void doIt() {
    ch = readCharFromInput();
    switch (ch) {
    case Base::_EOF: // do something
    }
  }
};
</code></pre>
<p>thx, MrGentleman</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1555838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1555838</guid><dc:creator><![CDATA[MrGentleman]]></dc:creator><pubDate>Tue, 29 Jul 2008 17:26:04 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Klassenkonstante von Basisklasse in Subklasse verwenden on Tue, 29 Jul 2008 18:16:57 GMT]]></title><description><![CDATA[<p>Das riecht förmlich nach schlechtem Design. Wenn es nicht direkt über Polymorphie geht, sollten Delegates o.ä. verwendet werden. Aber Switch in OOP ist fast immer ein Designfehler, und ein Switch über eine Konstante in der Basisklasse schauder, da stimmt was nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1555878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1555878</guid><dc:creator><![CDATA[*john 0]]></dc:creator><pubDate>Tue, 29 Jul 2008 18:16:57 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Klassenkonstante von Basisklasse in Subklasse verwenden on Tue, 29 Jul 2008 19:39:31 GMT]]></title><description><![CDATA[<p>MrGentleman schrieb:</p>
<blockquote>
<p>hat dafür jemand ne erklärung??</p>
</blockquote>
<p>Compiler schuld <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/1555917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1555917</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 29 Jul 2008 19:39:31 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Klassenkonstante von Basisklasse in Subklasse verwenden on Wed, 30 Jul 2008 05:23:54 GMT]]></title><description><![CDATA[<p>Naja - schlechtes design - das ganze soll ein scanner für einen parser werden; und da muss ich halt abhängig des gelesenen zeichens ein entsprechendes token generieren.<br />
wie meinst du es mit delegates?</p>
<p>lg, MrGentleman</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1556049</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1556049</guid><dc:creator><![CDATA[MrGentleman]]></dc:creator><pubDate>Wed, 30 Jul 2008 05:23:54 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Klassenkonstante von Basisklasse in Subklasse verwenden on Wed, 30 Jul 2008 05:48:48 GMT]]></title><description><![CDATA[<p>Compiletime-Konstanten müssen in der Klasse initialisiert werden, sonst werden es Laufzeitkonstanten <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/1556057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1556057</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 30 Jul 2008 05:48:48 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Klassenkonstante von Basisklasse in Subklasse verwenden on Wed, 30 Jul 2008 05:50:00 GMT]]></title><description><![CDATA[<p>~john schrieb:</p>
<blockquote>
<p>...Switch in OOP ist fast immer ein Designfehler, ...</p>
</blockquote>
<p>Naja, <em>das</em> riecht jedenfalls nach heftigster Verallgemeinerung. <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>Es stimmt natürlich, dass switch/case ein Konstrukt zur <em>Ablauf</em>steuerung ist ... aber ganz überflüssig ist es nicht (und sei es nur, um aufgrund vom Input die richtige Klasse zu instantiieren).</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1556059</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1556059</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 30 Jul 2008 05:50:00 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Klassenkonstante von Basisklasse in Subklasse verwenden on Wed, 30 Jul 2008 06:52:35 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Compiletime-Konstanten müssen in der Klasse initialisiert werden, sonst werden es Laufzeitkonstanten <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>
</blockquote>
<p>Mann oh Mann.....das war's, herzlichen Dank!</p>
<p>Ein switch/case bei einer scanner-implementierung ist meines wissens eigentlich unumgänglich, da dieser ja einfach eine große zustandsmaschine ist (es sei denn, sie wird mittels funktionspointer implementiert) und einfach abhängig vom gelesenen zeichen ein entsprechendes token für den parser generiert;<br />
Kurzer Auszug:</p>
<pre><code class="language-cpp">switch (ch) {
  case Scanner::_EOF:
    _token-&gt;type = Token::_EOF;
	break;

  case MyConcreteScanner::QUOTE:
    _token-&gt;type = Token::QUOTE;
    nextChar();
	break;
</code></pre>
<p>lg, MrGentleman</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1556083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1556083</guid><dc:creator><![CDATA[MrGentleman]]></dc:creator><pubDate>Wed, 30 Jul 2008 06:52:35 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Klassenkonstante von Basisklasse in Subklasse verwenden on Wed, 30 Jul 2008 09:28:54 GMT]]></title><description><![CDATA[<p>MrGentleman schrieb:</p>
<blockquote>
<p>Ein switch/case bei einer scanner-implementierung ist meines wissens eigentlich unumgänglich, da dieser ja einfach eine große zustandsmaschine ist (es sei denn, sie wird mittels funktionspointer implementiert)</p>
</blockquote>
<p>Na, es gibt unzählige Arten, die zu implementieren, z.B. als Graph, per State Pattern oder Lookup-Tabelle. Aber in Deinem Fall ist wahrscheinlich die Switch-Implementierung wirklich die schnellste (wenn der Compiler dafür intern eine Lookup-Tabelle generiert).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1556210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1556210</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Wed, 30 Jul 2008 09:28:54 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Klassenkonstante von Basisklasse in Subklasse verwenden on Wed, 30 Jul 2008 11:55:26 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Compiletime-Konstanten müssen in der Klasse initialisiert werden, sonst werden es Laufzeitkonstanten <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>
</blockquote>
<p>Nicht wenn man sie außerhalb mit einem Rvalue initialisiert <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/1556330</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1556330</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 30 Jul 2008 11:55:26 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Klassenkonstante von Basisklasse in Subklasse verwenden on Wed, 30 Jul 2008 13:37:34 GMT]]></title><description><![CDATA[<p>KasF schrieb:</p>
<blockquote>
<p>LordJaxom schrieb:</p>
<blockquote>
<p>Compiletime-Konstanten müssen in der Klasse initialisiert werden, sonst werden es Laufzeitkonstanten <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>
</blockquote>
<p>Nicht wenn man sie außerhalb mit einem Rvalue initialisiert <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>
</blockquote>
<p>womit willst du sonst initialisieren?<br />
Eine Initialisierung außerhalb der Klasse ist eine Definition, das würde unweigerlich zu Mehrfachdefinition führen, wenn man es im Header durchführt. Das darf man sich nur bei Template-Membern leisten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1556418</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1556418</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 30 Jul 2008 13:37:34 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Klassenkonstante von Basisklasse in Subklasse verwenden on Wed, 30 Jul 2008 14:54:20 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>womit willst du sonst initialisieren?</p>
</blockquote>
<p>Mit einem Lvalue, zB einer Funktionsrückgabe.</p>
<pre><code class="language-cpp">int f() { return 3; }

class Base
{
    public:
                static unsigned const int VAR;
};

unsigned int const Base::VAR = f();
</code></pre>
<p>Hier wird VAR mit einem nicht modifizierbaren Lvalue initalisiert.<br />
Somit wäre es doch eine Laufzeitkonstante und in einem Ausdruck, wo eine Compiletimekonstante erwartet wird, ungültig ?<br />
Diese Initalisierung funktioniert doch auch nur außerhalb ?</p>
<p>Compiletimekonsante:</p>
<pre><code class="language-cpp">int f() { return 3; }

class Base
{
    public:
                static unsigned const int VAR;
};

unsigned int const Base::VAR = 3;
</code></pre>
<p>Hier wäre es nun eine Compiletimekonstante und für das switch geeignet und auch außerhalb initalisiert.<br />
-&gt;</p>
<p>LordJaxom schrieb:</p>
<blockquote>
<p>Compiletime-Konstanten müssen in der Klasse initialisiert werden, sonst werden es Laufzeitkonstanten <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>
</blockquote>
<p>Das meinte ich eigentlich <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1556473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1556473</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 30 Jul 2008 14:54:20 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Klassenkonstante von Basisklasse in Subklasse verwenden on Wed, 30 Jul 2008 15:53:43 GMT]]></title><description><![CDATA[<p>KasF schrieb:</p>
<blockquote>
<p>camper schrieb:</p>
<blockquote>
<p>womit willst du sonst initialisieren?</p>
</blockquote>
<p>Mit einem Lvalue, zB einer Funktionsrückgabe.</p>
</blockquote>
<p>Hier werden Begriffe falsch verwendet. Ein (skalares) Lvalue ist ein Ausdruck der auf ein (skalares) Objekt verweist, während ein Rvalue dieses Typs einen bestimmten Zustand oder Wert repräsentiert, den ein solches Objekt annehmen könnte. Das Ergebnis eines Funktionsaufrufes ist ein Rvalue des Rückgabetyps (es sei denn, dieser Typ ist eine Referenz - dann ist der entsprechende Aufruf, wie in jedem analogen Kontext, ein Lvalue des Typs, auf den die Referenz verweist).<br />
Die entscheidende Frage ist hier, ob die Konstante mit einem konstanten Ausdruck initialisiert wurde.<br />
Ein Primärausdruck, der auf eine konstante Variable verweist, ist genau dann ein konstanter Ausdruck, wenn diese konstante Variable (lexikalisch) <em>zuvor</em> mit einem konstanten Ausdruck initialisiert wurde. Dabei spielt es wiederum keine Rolle, ob diese Initialisierung in der Klasse oder außerhalb stattgefunden hat. dass wir sie in Fällen wie diesem nicht außerhalb machen, hat andere Gründe - ODR.</p>
<pre><code class="language-cpp">struct Foo
{
    static const int x = 1;
    static const int y;
};

int foo = Foo::x; // Foo::x ist konstanter Ausdruck -&gt; statische Initialisierung
                  // Foo::x muss trotzdem noch definiert werden, denn dies ist kein Kontext, in dem ein konstanter Ausdruck stehen muss
const int Foo::x;
int bar = Foo::y; // Foo::y ist kein konstanter Ausdruck -&gt; dynamische Initialisierung
                  // Foo::y kann hier nicht als case-Label benutzt werden

const int Foo::y = 2; // 2 ist als Literal (natürlich) ein konstanter Ausdruck

int baz = Foo::y; // Foo::y ist konstanter Ausdruck -&gt; statische Initialisierung
                  // Foo::y könnte hier als case-Label benutzt werden
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1556491</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1556491</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 30 Jul 2008 15:53:43 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Klassenkonstante von Basisklasse in Subklasse verwenden on Wed, 30 Jul 2008 16:14:36 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Hier werden Begriffe falsch verwendet. Ein (skalares) Lvalue ist ein Ausdruck der auf ein (skalares) Objekt verweist, während ein Rvalue dieses Typs einen bestimmten Zustand oder Wert repräsentiert, den ein solches Objekt annehmen könnte. Das Ergebnis eines Funktionsaufrufes ist ein Rvalue des Rückgabetyps</p>
</blockquote>
<p>Das habe ich auch bis dato immer so gedacht, bis ich beim Comeau Compiler und in diverser Literatur darauf gestoßen bin, dass es modifiziberbare Lvalues und nicht modifizierbare Lvalues gibt.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">const int t  = 4; 
t = 33;               // Error, t ist ein nicht modifizierbarer Lvalue ?
f() = 4;              // Error, Rückgabe ist ein Rvalue ?
4 = 3;                // Error, 4 ist Rvalue ? 
4 + 3 = 2;           // the same ?
</code></pre>
<p>Richtig so ?</p>
<p>Ich habe das mal ausprobiert und Comeau sagt überal nicht modifizierbarer Lvalue. Das Wort Rvalue ist gar nicht aufgetaucht.</p>
<p>Klarheit bitte ? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1556513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1556513</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 30 Jul 2008 16:14:36 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Klassenkonstante von Basisklasse in Subklasse verwenden on Wed, 30 Jul 2008 16:27:28 GMT]]></title><description><![CDATA[<p>KasF schrieb:</p>
<blockquote>
<p>Ich habe das mal ausprobiert und Comeau sagt überal nicht modifizierbarer Lvalue.</p>
</blockquote>
<p>Da steht</p>
<blockquote>
<p>expression must be a modifiable lvalue</p>
</blockquote>
<p>- mit anderen Worten, der fehlerhafte Ausdruck ist kein modifizierbarer Lvalue. Da steht nicht, ob der Ausdruck zwar ein Lvalue sei, aber nicht modifizierbar (trifft in erste Zeile zu), oder schlicht kein Lvalue ist (die anderen 3 Fälle).<br />
Skalare Rvalues sind niemals modifizierbar (weil sie keine Objekte repräsentieren) - tatsächlich geht ja jede cv-Qualifikation verloren, wenn man den Wert eines Objektes liest (=den Lvalue-Ausdruck in einen Rvalue-Ausdruck konvertiert).<br />
Bei der Initialisierung eines <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-194356.html" rel="nofollow">sklaren</a> Objektes, benötigen wir eine Wert für das Objekt, also ein Rvalue. Steht dort aber ein Lvalue, wird dieses implizit in ein Rvalue konvertiert (also der Wert gelesen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1556519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1556519</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 30 Jul 2008 16:27:28 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Klassenkonstante von Basisklasse in Subklasse verwenden on Wed, 30 Jul 2008 16:34:20 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>mit anderen Worten, der fehlerhafte Ausdruck ist kein modifizierbarer Lvalue. Da steht nicht, ob der Ausdruck zwar ein Lvalue sei, aber nicht modifizierbar (trifft in erste Zeile zu), oder schlicht kein Lvalue ist (die anderen 3 Fälle).</p>
</blockquote>
<p>Oh :), vielen Dank wiedermal an dich camper für die Aufklärung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1556524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1556524</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 30 Jul 2008 16:34:20 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Klassenkonstante von Basisklasse in Subklasse verwenden on Wed, 30 Jul 2008 16:41:57 GMT]]></title><description><![CDATA[<p>MrGentleman schrieb:</p>
<blockquote>
<p>Naja - schlechtes design - das ganze soll ein scanner für einen parser werden; und da muss ich halt abhängig des gelesenen zeichens ein entsprechendes token generieren.</p>
</blockquote>
<p>Das Interface von Base und Derived ergibt irgend wie überhaupt keinen Sinn. Wozu eine Ableitung und dort eine Implementation? Polymorphie kommt nicht zum Einsatz, und wenn sie zum Einsatz käme wäre wohl eine Factory Klasse als Singleton, die Objekte erzeugt, die dann die eigentliche Aufgabe übernehmen sinnvoller.</p>
<p>MrGentleman schrieb:</p>
<blockquote>
<p>wie meinst du es mit delegates?</p>
</blockquote>
<p>Ein Implementierungsdetail ist damit gemeint. Meist taucht der Begriff in Zusammenhang mit SmallTalk Patterns auf z.B. mit Object Recursion - Chain of Command ist nur ein Spezialfall davon. Man kann in C++ Delegation via Funktionszeiger, Funktoren oder speziellen Klassen (Funktoren sind das ja auch) umsetzen, es kommt halt darauf an, was man braucht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1556532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1556532</guid><dc:creator><![CDATA[*john 0]]></dc:creator><pubDate>Wed, 30 Jul 2008 16:41:57 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Klassenkonstante von Basisklasse in Subklasse verwenden on Wed, 30 Jul 2008 16:50:37 GMT]]></title><description><![CDATA[<p>Nochmal nachgehakt:</p>
<p>camper schrieb:</p>
<blockquote>
<p>Ein (skalares) Lvalue ist ein Ausdruck der auf ein (skalares) Objekt verweist, während ein Rvalue dieses Typs einen bestimmten Zustand oder Wert repräsentiert, den ein solches Objekt annehmen könnte.</p>
</blockquote>
<pre><code class="language-cpp">const int t  = 4;
</code></pre>
<p>t ist somit ein Lvalue, aber ein nicht modifizierbarer ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1556534</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1556534</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 30 Jul 2008 16:50:37 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Klassenkonstante von Basisklasse in Subklasse verwenden on Wed, 30 Jul 2008 17:18:32 GMT]]></title><description><![CDATA[<p>KasF schrieb:</p>
<blockquote>
<p>Nochmal nachgehakt:</p>
<p>camper schrieb:</p>
<blockquote>
<p>Ein (skalares) Lvalue ist ein Ausdruck der auf ein (skalares) Objekt verweist, während ein Rvalue dieses Typs einen bestimmten Zustand oder Wert repräsentiert, den ein solches Objekt annehmen könnte.</p>
</blockquote>
<pre><code class="language-cpp">const int t  = 4;
</code></pre>
<p>t ist somit ein Lvalue, aber ein nicht modifizierbarer ?</p>
</blockquote>
<p>t ist eine konstante Variable.<br />
Der Ausdruck</p>
<pre><code class="language-cpp">t
</code></pre>
<p>ist ein nichtmodifizierbares Lvalue (Lvalue: Ausdruck verweist auf das skalare Objekt t; nichtmodifizierbar: da const-qualifiziert).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1556547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1556547</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 30 Jul 2008 17:18:32 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Klassenkonstante von Basisklasse in Subklasse verwenden on Wed, 30 Jul 2008 17:46:22 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>aber ganz überflüssig ist es nicht (und sei es nur, um aufgrund vom Input die richtige Klasse zu instantiieren).</p>
</blockquote>
<p>Es trifft aber nur auf die wenigen Fälle zu in denen man nur Integereingaben zu verarbeiten hat. Bei Scannern/Parsern hatte ich bisher immer das Glück, daß es sich um Zeichenketten handelte und nicht um einzelne Buchstaben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1556560</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1556560</guid><dc:creator><![CDATA[*john 0]]></dc:creator><pubDate>Wed, 30 Jul 2008 17:46:22 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Klassenkonstante von Basisklasse in Subklasse verwenden on Wed, 30 Jul 2008 17:58:33 GMT]]></title><description><![CDATA[<p>MrGentleman schrieb:</p>
<blockquote>
<pre><code class="language-cpp">switch (ch) {
  case Scanner::_EOF:
    _token-&gt;type = Token::_EOF;
	break;

  case MyConcreteScanner::QUOTE:
    _token-&gt;type = Token::QUOTE;
    nextChar();
	break;
</code></pre>
</blockquote>
<p>Das meinte ich mit schlechtem Design (in Kombination zu Deinen erstem Posting). Du scheinst C und OOP Programmierung zu vermischen. Falls du wegen der Geschwindigkeit ein C-ähnlichen Ansatz brauchst, dann brauchst Du keine Vererbunghierachie, und wenn es OOP sein soll, was soll dann bitte &quot;_token-&gt;type&quot; für eine Aufgabe übernehmen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1556564</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1556564</guid><dc:creator><![CDATA[*john 0]]></dc:creator><pubDate>Wed, 30 Jul 2008 17:58:33 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Klassenkonstante von Basisklasse in Subklasse verwenden on Tue, 28 Apr 2009 15:30:38 GMT]]></title><description><![CDATA[<p>Leute habe folgendes Programm geschrieben:</p>
<p>#include &lt;cstdlib&gt;</p>
<p>#include &lt;iostream&gt;</p>
<p>using namespace std;</p>
<p>int main(int argc, char *argv[])<br />
{</p>
<p>int Preis, Rabatt, Endpreis ;</p>
<p>cout &lt;&lt; &quot; Berechnung des Endpreises &quot; ;</p>
<p>cout &lt;&lt; &quot; Geben Sie den Preis ein &quot; ;<br />
cin &gt;&gt; Preis ;</p>
<p>cout &lt;&lt; &quot; 8% Großkunde, 5% Stammkunde oder 0% Sonstige ? &quot; ;</p>
<p>cin &gt;&gt; 8% &gt;&gt; 5% &gt;&gt; 0% ;</p>
<p>int Auswahl ;</p>
<p>switch(Auswahl)</p>
<p>{<br />
case 1: Auswahl= 8% ;<br />
break ;</p>
<p>case 2: Auswahl= 5% ;<br />
break ;</p>
<p>case 3: Auswahl = 0% ;<br />
break ;</p>
<p>default: Auswahl = 15% ;</p>
<p>}</p>
<p>Endpreis = Preis * 8% ;</p>
<p>Endpreis = Preis * 5% ;</p>
<p>Endpreis = Preis * 0% ;</p>
<p>cout &lt;&lt; &quot; Endpreis ist gleich &quot; &lt;&lt; Endpreis ;</p>
<p>system(&quot;PAUSE&quot;);<br />
return EXIT_SUCCESS;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1702710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1702710</guid><dc:creator><![CDATA[Chris19911]]></dc:creator><pubDate>Tue, 28 Apr 2009 15:30:38 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Klassenkonstante von Basisklasse in Subklasse verwenden on Tue, 28 Apr 2009 15:31:55 GMT]]></title><description><![CDATA[<p>Ich hoffe, jemand kann mir helfen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1702712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1702712</guid><dc:creator><![CDATA[Chris19911]]></dc:creator><pubDate>Tue, 28 Apr 2009 15:31:55 GMT</pubDate></item></channel></rss>