<?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[Case mit {}]]></title><description><![CDATA[<p>Hallo,<br />
vorweg muss ich sagen das ich C++ beginner bin und gerade in die OOP einsteige.<br />
Jetzt habe ich mir ein kleines Beispiel herangezogen und habe dies versucht umzusetzen. Mir gelang das auch ganz gut bis auf dieden Fehler:</p>
<p>Case umgeht die Initialisierung einer lokalen Variable</p>
<p>Das Problem habe ich gelöst, jedoch habe ich dazu eine Frage. Warum tritt der Fehler nicht mehr auf wenn ich case 1: {} setze. Das heisstz mit den {} bekomme ich den Fehler nicht.</p>
<p>Könnte mir jemand erklären warum das so ist?</p>
<p>Danke schonmal im Vorraus!</p>
<p>Hier der Code:</p>
<pre><code class="language-cpp">#include &lt;iostream.h&gt;
#include &lt;conio.h&gt;

//Klassendefinition
class Konto {
   private:
      int Kontostand;

   public:
      int getKontostand();
      int setKontostand(int);
      int setKontostandEinz(int);
      int setKontostandAusz(int);
};

//Definition der Methoden
int Konto::setKontostand(int neuerStand) {
   Kontostand = neuerStand;
   return Kontostand;
}

int Konto::getKontostand() {
   return Kontostand;
}

int Konto::setKontostandEinz(int einzahlung) {
   Kontostand += einzahlung;
   return Kontostand;
}

int Konto::setKontostandAusz(int auszahlung) {
   Kontostand -= auszahlung;
   return Kontostand;
}

void main() {
   //Deklaration des Objekts
   Konto testKonto;

   int eingabe = 0;
   int flag = 1;

   testKonto.setKontostand(0);

   while(flag == 1) {
      cout&lt;&lt;&quot;\n\nK O N T O V E R W L T U N G&quot;&lt;&lt;endl;
      cout&lt;&lt;&quot;1 = Kontostand ausgeben&quot;&lt;&lt;endl;
      cout&lt;&lt;&quot;2 = Kontostand aendern&quot;&lt;&lt;endl;
      cout&lt;&lt;&quot;3 = Ende der Aktion\n\n&quot;&lt;&lt;endl;
      cin&gt;&gt;eingabe;

      switch(eingabe) {
         case 1: {
            cout&lt;&lt;&quot;Der Kontostand betraegt: &quot;&lt;&lt;testKonto.getKontostand()&lt;&lt;&quot;\n\n&quot;&lt;&lt;endl;
            break;
         }
         case 2: {
            int einzAusz = 0;
            cout&lt;&lt;&quot;Moechten Sie abheben oder einzahlen? &quot;&lt;&lt;endl;
            cout&lt;&lt;&quot;1 = einzahlen &quot;&lt;&lt;endl;
            cout&lt;&lt;&quot;2 = auszahlen &quot;&lt;&lt;endl;
            cout&lt;&lt;&quot;3 = setzen &quot;&lt;&lt;endl;
            cin&gt;&gt;einzAusz;

            if(einzAusz == 1) {
                int einzahlungNeu;
                cout&lt;&lt;&quot;Wie viel wollen Sie einbezahlen? &quot;;
                cin&gt;&gt;einzahlungNeu;
                testKonto.setKontostandEinz(einzahlungNeu);
            } else if(einzAusz == 2) {
                 int auszahlenNeu;
                 cout&lt;&lt;&quot;Wie viel wollen Sie abheben? &quot;;
                 cin&gt;&gt;auszahlenNeu;
                 testKonto.setKontostandAusz(auszahlenNeu);
              } else if(einzAusz == 3) {
                   int setzeNeuenStand;
                   cout&lt;&lt;&quot;Welchen Betrag soll der neue Kontostand haben? &quot;;
                   cin&gt;&gt;setzeNeuenStand;
                   testKonto.setKontostand(setzeNeuenStand);
                 }
            break;
         }
         case 3: {
            flag = 0;
            cout&lt;&lt;&quot;Programm beendet&quot;&lt;&lt;endl;
            break;
         }
      }

   }

   getch();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/125645/case-mit</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 09:40:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/125645.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 08 Nov 2005 10:56:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Case mit {} on Tue, 08 Nov 2005 10:56:07 GMT]]></title><description><![CDATA[<p>Hallo,<br />
vorweg muss ich sagen das ich C++ beginner bin und gerade in die OOP einsteige.<br />
Jetzt habe ich mir ein kleines Beispiel herangezogen und habe dies versucht umzusetzen. Mir gelang das auch ganz gut bis auf dieden Fehler:</p>
<p>Case umgeht die Initialisierung einer lokalen Variable</p>
<p>Das Problem habe ich gelöst, jedoch habe ich dazu eine Frage. Warum tritt der Fehler nicht mehr auf wenn ich case 1: {} setze. Das heisstz mit den {} bekomme ich den Fehler nicht.</p>
<p>Könnte mir jemand erklären warum das so ist?</p>
<p>Danke schonmal im Vorraus!</p>
<p>Hier der Code:</p>
<pre><code class="language-cpp">#include &lt;iostream.h&gt;
#include &lt;conio.h&gt;

//Klassendefinition
class Konto {
   private:
      int Kontostand;

   public:
      int getKontostand();
      int setKontostand(int);
      int setKontostandEinz(int);
      int setKontostandAusz(int);
};

//Definition der Methoden
int Konto::setKontostand(int neuerStand) {
   Kontostand = neuerStand;
   return Kontostand;
}

int Konto::getKontostand() {
   return Kontostand;
}

int Konto::setKontostandEinz(int einzahlung) {
   Kontostand += einzahlung;
   return Kontostand;
}

int Konto::setKontostandAusz(int auszahlung) {
   Kontostand -= auszahlung;
   return Kontostand;
}

void main() {
   //Deklaration des Objekts
   Konto testKonto;

   int eingabe = 0;
   int flag = 1;

   testKonto.setKontostand(0);

   while(flag == 1) {
      cout&lt;&lt;&quot;\n\nK O N T O V E R W L T U N G&quot;&lt;&lt;endl;
      cout&lt;&lt;&quot;1 = Kontostand ausgeben&quot;&lt;&lt;endl;
      cout&lt;&lt;&quot;2 = Kontostand aendern&quot;&lt;&lt;endl;
      cout&lt;&lt;&quot;3 = Ende der Aktion\n\n&quot;&lt;&lt;endl;
      cin&gt;&gt;eingabe;

      switch(eingabe) {
         case 1: {
            cout&lt;&lt;&quot;Der Kontostand betraegt: &quot;&lt;&lt;testKonto.getKontostand()&lt;&lt;&quot;\n\n&quot;&lt;&lt;endl;
            break;
         }
         case 2: {
            int einzAusz = 0;
            cout&lt;&lt;&quot;Moechten Sie abheben oder einzahlen? &quot;&lt;&lt;endl;
            cout&lt;&lt;&quot;1 = einzahlen &quot;&lt;&lt;endl;
            cout&lt;&lt;&quot;2 = auszahlen &quot;&lt;&lt;endl;
            cout&lt;&lt;&quot;3 = setzen &quot;&lt;&lt;endl;
            cin&gt;&gt;einzAusz;

            if(einzAusz == 1) {
                int einzahlungNeu;
                cout&lt;&lt;&quot;Wie viel wollen Sie einbezahlen? &quot;;
                cin&gt;&gt;einzahlungNeu;
                testKonto.setKontostandEinz(einzahlungNeu);
            } else if(einzAusz == 2) {
                 int auszahlenNeu;
                 cout&lt;&lt;&quot;Wie viel wollen Sie abheben? &quot;;
                 cin&gt;&gt;auszahlenNeu;
                 testKonto.setKontostandAusz(auszahlenNeu);
              } else if(einzAusz == 3) {
                   int setzeNeuenStand;
                   cout&lt;&lt;&quot;Welchen Betrag soll der neue Kontostand haben? &quot;;
                   cin&gt;&gt;setzeNeuenStand;
                   testKonto.setKontostand(setzeNeuenStand);
                 }
            break;
         }
         case 3: {
            flag = 0;
            cout&lt;&lt;&quot;Programm beendet&quot;&lt;&lt;endl;
            break;
         }
      }

   }

   getch();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/911626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/911626</guid><dc:creator><![CDATA[dE_MaStEr]]></dc:creator><pubDate>Tue, 08 Nov 2005 10:56:07 GMT</pubDate></item><item><title><![CDATA[Reply to Case mit {} on Tue, 08 Nov 2005 11:03:48 GMT]]></title><description><![CDATA[<p>bei switch-case springt das Programm direkt zur &quot;richtigen&quot; case-Marke. Wenn in dem Bereich dazwischen Variablen definiert werden, sind die an der Stelle theoretisch gültig, aber nicht initialisiert (weil die Initialisierung nicht innerhalb der case-Marke lag, wird sie NICHT ausgeführt), enthalten also undefinierte Werte.<br />
Wenn du den Inhalt einer case-Marke in einen eigenen Block {} setzt, werden die darin definierten Variablen auf diesen Block beschränkt und sind außerhalb nicht mehr verfügbar:</p>
<pre><code class="language-cpp">switch(var1)
{
case 1:
  int i=7;
  cout&lt;&lt;&quot;2*&quot;&lt;&lt;i&lt;&lt;&quot;=&quot;&lt;&lt;2*i&lt;&lt;endl;
  break;
case 2://überspringt die &quot;int i=7;&quot; -&gt; Wert undefiniert
  cout&lt;&lt;&quot;i=&quot;&lt;&lt;i&lt;&lt;endl;
  break;
}

switch(var2)
{
case 1:
  {
    int i=7;
    cout&lt;&lt;&quot;2*&quot;&lt;&lt;i&lt;&lt;&quot;=&quot;&lt;&lt;2*i&lt;&lt;endl;
    break;
  }
case 2:
  //i ist ungültig, kann also nicht mit undefiniertem Wert verwendet werden
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/911637</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/911637</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 08 Nov 2005 11:03:48 GMT</pubDate></item><item><title><![CDATA[Reply to Case mit {} on Tue, 08 Nov 2005 11:17:39 GMT]]></title><description><![CDATA[<p>Das heisst man sollte am besten entweder die Variablen auserhalb definieren oder eben immer die Klammern hinzufügen oder?</p>
<p>Gruss Michael</p>
]]></description><link>https://www.c-plusplus.net/forum/post/911649</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/911649</guid><dc:creator><![CDATA[dE_MaStEr]]></dc:creator><pubDate>Tue, 08 Nov 2005 11:17:39 GMT</pubDate></item><item><title><![CDATA[Reply to Case mit {} on Tue, 08 Nov 2005 12:50:51 GMT]]></title><description><![CDATA[<p>je nach dem, was du willst. wenn du sie außerhalb definierst sind sie überall in dieser funktion gültig. wenn du sie in {} definierst kannst du auch nur in dem bereich in klammern benützen.<br />
geloescht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/911748</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/911748</guid><dc:creator><![CDATA[geloescht]]></dc:creator><pubDate>Tue, 08 Nov 2005 12:50:51 GMT</pubDate></item><item><title><![CDATA[Reply to Case mit {} on Tue, 08 Nov 2005 14:10:09 GMT]]></title><description><![CDATA[<p>Das heisst, wenn ich keine {} verwende (auch bei IF etc.) sind die definierten Variablen im zuvor aktuellen Block aktiv?<br />
Dann gewöhn ich mir wohl immer an das ich die {} hin mache.</p>
<p>Gruss Michael</p>
]]></description><link>https://www.c-plusplus.net/forum/post/911795</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/911795</guid><dc:creator><![CDATA[dE_MaStEr]]></dc:creator><pubDate>Tue, 08 Nov 2005 14:10:09 GMT</pubDate></item><item><title><![CDATA[Reply to Case mit {} on Tue, 08 Nov 2005 16:46:03 GMT]]></title><description><![CDATA[<p>Nun ja... vielleicht verdeutlicht etwas pseudocode die situation:</p>
<pre><code class="language-cpp">int x; //globale variable

void foo()
{
  int a;
  //a und x hier ansprechbar
  switch(a)
  {
    case 1:
    //a und x hier ansprechbar
    //int b ginge hier nicht! sonst wäre die variable manchmal definiert und manchmal nicht, je nach dem, ob int == 1
    break;
    case 2:
    {
      int b;
      //a, x und b hier ansprechbar
    }
    break;
    case 3:
    //nur a und x hier ansprechbar
    break;
  }
}
</code></pre>
<p>Eine Variable ist gültig, wenn sie im selben oder einem übergeordneten Block definiert wurde. Dabei ist es egal, ob man in einem Unterblock oder Unterunterblock ist. Blöcke werden immer durch {} begrenzt.<br />
geloescht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/911979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/911979</guid><dc:creator><![CDATA[geloescht]]></dc:creator><pubDate>Tue, 08 Nov 2005 16:46:03 GMT</pubDate></item></channel></rss>