我在确定建模这种类型关系的方法时遇到了麻烦...
所有老板都可以做某些事情,并拥有某些事情(速度,健康状况等),因此这些都是“主要”抽象老板阶层的一部分。
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之类的问题的答案,以确保避免这些陷阱。