我如何告诉课程创建独特的子类

How do I tell a class to create unique sub-classes

本文关键字:子类 创建 何告诉 程创建      更新时间:2023-10-16

我已经定义了一个名为 Instrument的类

我现在创建了两种乐器:

Instrument Organ
Instrument Piano

我还有另一个称为Screen的类,该类处理更改值,例如音量并将这些值放在显示屏上。例如,它具有称为IncValue()的函数,该函数可以执行它所说的。

我想创建可以重复所有乐器的子类,例如:

Screen Volume

这将声明int16_t volumeIncValue()会增加卷,DecValue()降低它。

但是如何从Instrument Class创建这些Screens,以便我可以做

之类的事情
Organ.Volume.IncValue()

(或 ->也许,我在这种复杂性水平上完全迷失了)和

Piano.Volume.IncValue()

他们只能在相关工具上工作。

最终将声明100张乐器,所以我真的不想声明诸如Screen PianoVolumeScreen OrganVolume等独特类。

希望这不是一个问题。

我认为您在类和对象之间混杂在一起。只需让Instrument类拥有一个Screen类的对象即可。其余的然后自然跟随。

所以您可能有(稍微扩展您的想法):

class Screen
{
public:
    void IncValue ();
private:
    int volume;
};
class Instrument
{
public:
    Screen screen;
    ...
};
class Piano : public Instrument
{
    ...
};

然后您可以(例如):

Piano MyPiano;
MyPiano.screen.IncValue ();
...

对于任何乐器或子类。