2017-10-27 1 views
-4

Ich habe ein Problem mit Switch-Anweisung in der Klasse Geburtstag, warum kann ich nicht Schalter in der Klasse? ich versuche zu lösen, aber ich kann nicht, ich verwende Visual Studio 2017Warum kann ich nicht Switch-Anweisung in der Klasse setzen

This is Error List image

#include<string> 
#include<iostream> 
using namespace std; 

class Birthday { 
public: 
    Birthday(int d,int m,int y) 
     :day(d),month(m),year(y) 
    { 
    } 
    void printBirth() { 
     cout << month << " " << day << " " << year << endl; 
    } 

private: 
    int day, month, year; 
    string month_name; 
    switch (month) 
    { 
    case 1: 
     month_name = "January" 
      break; 
    default: 
     month = "None"; 
     break; 
    } 

}; 
+3

Wenn das möglich wäre: Wann sollte der Code ausgeführt werden? –

Antwort

5

Da der Code/statements ausführbaren Code, der sollte innerhalb Elementfunktion (Körper), nicht in beliebiger Klasse platziert wird Umfang. Class ist (ein benutzerdefinierter) Typ. Es sind Daten und Funktionen, die auf diese Daten in einem zusammengefasst sind. Die Funktionalität geht in eine Member-Funktion.

3

Klassen enthalten keine ausführbaren Anweisungen enthalten sie Mitgliederfunktionen (auch als Methoden bekannt), die Aussagen enthalten. Eine dieser Funktionen ist ein Sonderfall, der als -Konstruktor bekannt ist, den Sie in Ihrem Beispiel tatsächlich verwendet haben.

Wenn Sie so etwas wie die Zuweisung einer Variable auf einem anderen Feld basiert tun möchten, können Sie es innerhalb des Konstruktors tun:

#include <string> 
#include <iostream> 
using namespace std; 

class Birthday { 
public: 
    Birthday(int d,int m,int y) 
     :day(d),month(m),year(y) 
    { 
     switch (month) 
     { 
     case 1: 
      month_name = "January" 
       break; 

     // Add remaining cases here 
     default: 
      month_name = "None"; 
      break; 
     } 
    } 
    void printBirth() { 
     cout << month << " " << day << " " << year << endl; 
    } 

private: 
    int day, month, year; 
    string month_name; 


}; 

Bitte beachte, dass ich auch Ihre Zuordnung von month = "None"; behoben - month ein int ist, Sie müssen stattdessen month_name zuweisen.

-1

Keine Aussage wie "switch, if, elseif etc." kann so benutzt werden, wie du es getan hast. Sie können deklarative Elemente innerhalb des Klassenbereichs wie Variablen und Funktionsdeklarationen schreiben, aber nicht den eigentlichen Code-Text. Dies ist der Grund, warum Sie ihn in den Bereich Ihrer Elementfunktion schreiben müssen.

Verwandte Themen