我在班级生日中遇到switch语句的问题,为什么我不能把班级放在班里? 我尝试解决,但我不能,我使用Visual Studio 2017
#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;
}
};
答案 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等”的陈述可以按照你的方式使用。您可以在类范围内编写声明性内容,如变量和函数声明,但不是实际的代码体,这就是您必须在成员函数范围内编写它的原因。