我们说我们有一个人类
class Person{
int id;
Status* cur_status;
...
}
我们的课程状态如下:
class Status{
int income;
int tax;
virtual void reform(int _case);
...
}
class Unemployed : public Status{
void reform(int _case){
switch (_case){
case 1: tax /= 2; //recession
case 2: tax /= 3; //depression
case 3: tax = 0;
...
}
}
}
class Worker : public Status{
void reform(int _case){
switch (_case){
case 1: tax /= 2; //recession
case 2: tax /= 3; //depression
case 3: tax = 100;
...
}
}
}
鉴于此人,他/她的状态可以动态更改,
所以现在我遇到了一个问题:
一些改革案例是两种状态之间的相同,而其他情况则不是
我是否必须分别在派生类中声明ALL OF' EM?
实际上,我想将常见案例提取到基础课程中,但我不知道如何
有没有人可以帮助我?
答案 0 :(得分:4)
这些方面的一些东西,也许是:
class Unemployed : public Status{
void reform(int _case){
switch (_case){
// Special case for this kind of Status
case 1:
tax /= 2;
break;
// Everything else is implemented by base class
default:
Status::reform(_case);
break;
}
}
}