为什么我不能把switch语句放在课堂上

时间:2017-10-27 11:12:50

标签: c++ console-application

我在班级生日中遇到switch语句的问题,为什么我不能把班级放在班里? 我尝试解决,但我不能,我使用Visual Studio 2017

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 个答案:

答案 0 :(得分:5)

因为代表可执行代码的代码/ statements应该放在成员函数(正文)中,而不是放在任意类范围内。 Class是(用户定义的)类型。它是将数据包装成一个数据和功能。功能在成员函数内部。

答案 1 :(得分:3)

类不包含可执行语句,它们包含成员函数(也称为方法),它们可以包含语句。其中一个函数是一个称为构造函数的特殊情况,您已经在实例中使用了它。

如果你想做一些基于其他字段分配变量的事情,你可以在构造函数中做到这一点:

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


};

请注意,我还修正了month = "None"; - month的作业int,您需要转而month_name

答案 2 :(得分:-1)

没有“switch,if,elseif等”的陈述可以按照你的方式使用。您可以在类范围内编写声明性内容,如变量和函数声明,但不是实际的代码体,这就是您必须在成员函数范围内编写它的原因。