我如何告诉 class 创建唯一的子 classes

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

我定义了一个名为 Instrument 的 class,我通过调用 class 中的一个函数对其进行初始化,并将其命名为要显示在显示屏上的乐器名称。

我现在创建两个乐器:

Instrument Organ
Instrument Piano

我还有另一个名为 Screen 的 class,它处理音量等变化值并将这些值显示在显示器上。例如,它有一个名为 IncValue() 的函数,它按照它说的去做。

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

Screen Volume

这会声明 int16_t volumeIncValue() 会增加音量,DecValue() 会减少音量。

但是我如何从 Instrument Class 创建那些 Screens 以便我可以做类似

的事情
Organ.Volume.IncValue()

(或者 -> 也许,我完全迷失了这种复杂程度) 和

Piano.Volume.IncValue()

而且它们只适用于相关的仪器。

最终会声明 100 种乐器,所以我真的不想声明唯一的 类,例如 Screen PianoVolumeScreen OrganVolume

希望这个问题不是太啰嗦。

我认为您混淆了 classes 和对象。只需让 class Instrument 拥有 class Screen 的一个对象。剩下的就自然而然了。

所以你可能有(稍微扩展一下你的想法):

class Screen
{
public:
    void IncValue ();
private:
    int volume;
};

class Instrument
{
public:
    Screen screen;
    ...
};

class Piano : public Instrument
{
    ...
};

然后你可以这样做(例如):

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

对于任何乐器或乐器的子class。