我如何告诉一个类创建唯一的子类

时间:2019-03-20 23:02:19

标签: c++ class subclass

我定义了一个名为Instrument的类,通过在该类中调用一个函数作为要显示在显示器上的工具的名称来对其进行初始化。

我现在创建两个工具:

Instrument Organ
Instrument Piano

我还有另一个叫做Screen的类,它处理诸如音量之类的变化值并将这些值显示在显示器上。例如,它有一个名为IncValue()的函数,它可以完成所说的操作。

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

Screen Volume

这将声明int16_t volumeIncValue()将增大音量,DecValue()减小音量。

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

Organ.Volume.IncValue()

(或->也许,我已经完全不了解这种复杂性了) 和

Piano.Volume.IncValue()

并且它们仅适用于相关的文书。

最终将声明100个乐器,所以我真的不想声明诸如Screen PianoVolumeScreen OrganVolume之类的唯一类。

希望这不是一个太长的问题。

1 个答案:

答案 0 :(得分:0)

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

所以您可能会(稍微扩展一下想法):

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

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

class Piano : public Instrument
{
    ...
};

然后您可以做(例如):

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

用于任何工具或工具的子类。