我在确定建模这种类型关系的方法时遇到了麻烦...

所有老板都可以做某些事情,并拥有某些事情(速度,健康状况等),因此这些都是“主要”抽象老板阶层的一部分。

class Boss // An abstract base class
{
    //Stuff that all Bosses can do/have and pure virtual functions
};

现在,我想为可以拍摄的老板指定一些其他的纯虚拟功能和成员。我想知道如何建模?我考虑过从Boss类派生ShootingBoss类,但是特定的老板是他们自己的类(Boss只是它们派生的抽象基类。)因此,如果ShootingBoss是从Boss派生的,而特定的boss是从Boss派生的ShootingBoss,该老板将无法访问Boss类中的 protected 数据。
Boss(ABC) -> ShootingBoss(ABC) -> SomeSpecificBoss(can't access protected data from Boss?)

基本上,我想知道推荐的建模方法是什么。任何帮助表示赞赏。如果需要更多信息,我很乐意提供。

最佳答案

我认为您需要研究Mixin类。

例如,您可以创建以下类:

class Boss {
    // Here you will include all (pure virtual) methods which are common
    // to all bosses, and all bosses MUST implement.
};

class Shooter {
    // This is a mixin class which defines shooting capabilities
    // Here you will include all (pure virtual) methods which are common
    // to all shooters, and all shooters MUST implement.
};

class ShootingBoss : public Boss, public Shooter
{
    // A boss who shoots!
    // This is where you implement the correct behaviour.
};

Mixins要求使用multiple inheritance,这样做有很多陷阱和复杂性。我建议您查看诸如this one之类的问题的答案,以确保避免这些陷阱。

10-08 19:57