什么用于初始值? struct,enum或class,#define c ++

时间:2014-12-16 16:02:57

标签: c++ oop enums

提出这个问题并且可能更适合代码审查网站是一种耻辱,所以提前抱歉。

我的问题如下(因为更多的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
};

拥有基本对象的默认实例,然后只需复制它们并创建我需要的新对象。

提前致谢!

1 个答案:

答案 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();
}