提出这个问题并且可能更适合代码审查网站是一种耻辱,所以提前抱歉。
我的问题如下(因为更多的OOP可以扩展为其他语言):
我有一个班级:
class Unit
{
public:
Unit(Type);
Type type;
private:
int weaponry;
int shielding;
int hull;
int rapid_fire;
}
使用枚举来区分不同类型的单位。
enum Type{
Cruiser,
Missile
};
所有单位都将使用默认值进行初始化(加上一个因子,具体取决于外部变量)。
Unit::Unit(Type type)
{
this->type = type;
int weaponry, shielding, hull,rapid_fire;
switch(type){
case Cruiser:
weaponry = 2700;
shielding = 50;
hull = 400;
rapid_fire = 5;
break;
case Missile:
weaponry = 200;
shielding = 20;
hull = 80;
rapid_fire = 0;
break;
}
this->weaponry = weaponry ; //+ whatever
this->shielding = shielding; //+ whatever
this->hull = hull; //+ whatever
this->rapid_fire = rapid_fire;
}
我还将有一个方法可以更改对象的值,例如典型的
setHull(int newHull){this->hull = newHull}
在其中一种方法中,我想将其中一个私有变量恢复为默认值,在示例中,如果是Cruiser this->屏蔽= 50,如果它的导弹= 20。
我的问题如下。 难道我做错了什么?
我有几个选项来保持默认值,或者是(我会#34; noobly"将选择)
#define initial_cruiser_shielding 50
使用枚举:
enum shielding_init{
cruiser_i = 50,
missile_i = 20
};
拥有基本对象的默认实例,然后只需复制它们并创建我需要的新对象。
提前致谢!
答案 0 :(得分:0)
我的建议是创建可以返回默认值的私有静态成员函数。
class Unit
{
public:
Unit(Type);
Type type;
int set_default_weaponry()
{
weaponry = get_default_weaponry();
}
int set_default_shielding()
{
shielding = get_default_shielding();
}
int set_default_hull()
{
hull = get_default_hull();
}
int set_default_rapid_fire()
{
rapid_fire = get_default_rapid_fire();
}
private:
int weaponry;
int shielding;
int hull;
int rapid_fire;
static int get_default_weaponry();
static int get_default_shielding();
static int get_default_hull();
static int get_default_rapid_fire();
}