2017-10-27 8 views
-4

저는 class Birthday에 switch 문에 문제가 있습니다. 왜 클래스에 스위치를 넣을 수 없습니까? 난 해결하려고하지만, 실행 가능 코드를 나타내는 코드/statements이 아닌 임의의 클래스의 멤버 함수 (본체)을 배치해야하기 때문에, 난 비주얼 스튜디오 2,017switch 문을 클래스에 넣을 수없는 이유는 무엇입니까?

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

가능한 경우 : 코드를 언제 실행해야합니까? –

답변

5

를 사용할 수 없다 범위. Class은 (사용자가 정의한) 유형입니다. 이 데이터는 하나의 데이터로 래핑 된 데이터 및 기능입니다. 기능은 멤버 함수 내에서 사용됩니다.

3

클래스가 실행 문을 포함하지 않는, 그들은이 문을 포함 할 수 있습니다 (또한 방법라고도 함) 멤버 함수가 포함되어 있습니다. 이러한 함수 중 하나는 생성자으로 알려진 특수한 경우이며 실제로 예제에서 사용했습니다. 당신이 다른 필드를 기준으로 변수를 할당처럼 뭔가를하려는 경우

, 당신은 생성자 내에서 그것을 할 수 있습니다 : 나는 또한 month = "None";의 과제를 해결

#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; 


}; 

주 - monthint입니다, 대신 month_name에 할당해야합니다.

-1

"switch, if, elseif etc."와 같은 문구는 없습니다. 당신이했던 방식대로 사용할 수 있습니다. 변수 및 함수 선언과 같은 클래스 범위 내에 선언적 내용을 작성할 수 있지만 실제 코드 본문이 아닌이 선언문은 멤버 함수의 범위 내에 작성해야합니다.

관련 문제