4

好的,在昨晚之后,我决定改写我的问题以便于阅读。我有2个班级,陆军和战斗组。继承人下面的类,虽然缺少一些部分:

class Battlegroups
{
    private: battlegroup battlegroupobject[100];

    public: 

    void AddBattleGroup(); //add a battlegroup object to the array
    void removebattlegroup(); //remove a battle group objects from the array
};

class Army
{
    private: battlegroups battlegroupsobject;

    public:

    void formbattlegroup()
    {
        battlegroupsobject.AddBattleGroup();
    }

    void disbandbattlegroup()
    {
        battlegroupsobject.removebattlegroup();
    }
};

看,问题出在formbattlegroup()和disbandbattlegroup()上,好像加了个无意义的接口。

如果有办法让我在不执行上述操作的情况下访问 Addbattlegroup 和 removebattlegroup() 方法,请告诉我。

或者,告诉我这是否是你这样做的方式,但对我来说,这似乎是为了代码而添加代码。

4

2 回答 2

2

如果Battlegroups仅用于包含对象,则可以改为使用battlegroup battlegroupobject[100]right Army。或使用std::vector<battlegroup> 代替battlegroups. 如果不是(无论如何),您的决定似乎很正确,因为这些对象有不同的职责。

于 2012-04-21T19:11:21.650 回答
0

不太确定您的设计,但这是我的猜测:您想要拥有ArmyNavy。然后您可能想要继承Army, Navyfrom Battlegroups,这样您就不需要为每个类编写AddBattleGroupand等。如下所示:RemoveBattleGroupArmyNavy

class Battlegroups
{
    // side-note: you may want to replaced below by std::vector<battlegroup>
    private: battlegroup battlegroupobject[100]; 

    public: 

    void AddBattleGroup(); 
    void RemoveBattleGroup(); 
};

class Army
 :  public Battlegroups
{
  // other specific implementations
};

class Navy
 :  public Battlegroups
{
  // other specific implementations
};

// usage
Army army1;
army1.AddBattleGroup();
Navy navy1;
navy1.AddBattleGroup();

如果这不是您想要的,您可能需要考虑 Dmitry 的回答。

于 2012-04-22T03:36:33.993 回答