我如何告诉 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 volume
和 IncValue()
会增加音量,DecValue()
会减少音量。
但是我如何从 Instrument Class
创建那些 Screens
以便我可以做类似
的事情
Organ.Volume.IncValue()
(或者 -> 也许,我完全迷失了这种复杂程度)
和
Piano.Volume.IncValue()
而且它们只适用于相关的仪器。
最终会声明 100 种乐器,所以我真的不想声明唯一的 类,例如 Screen PianoVolume
和 Screen 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。
我定义了一个名为 Instrument
的 class,我通过调用 class 中的一个函数对其进行初始化,并将其命名为要显示在显示屏上的乐器名称。
我现在创建两个乐器:
Instrument Organ
Instrument Piano
我还有另一个名为 Screen
的 class,它处理音量等变化值并将这些值显示在显示器上。例如,它有一个名为 IncValue()
的函数,它按照它说的去做。
我想创建可以为所有乐器重复的子classes,例如:
Screen Volume
这会声明 int16_t volume
和 IncValue()
会增加音量,DecValue()
会减少音量。
但是我如何从 Instrument Class
创建那些 Screens
以便我可以做类似
Organ.Volume.IncValue()
(或者 -> 也许,我完全迷失了这种复杂程度) 和
Piano.Volume.IncValue()
而且它们只适用于相关的仪器。
最终会声明 100 种乐器,所以我真的不想声明唯一的 类,例如 Screen PianoVolume
和 Screen 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。