Ich arbeite TTY-Kommunikation mit verschiedenen Protokollen. Ich habe angefangen, Code in C++ mit Klassen zu implementieren. Eine Elternklasse enthält einige Grundfunktionen (schreiben, lesen ...) mit einigen virtuellen Funktionen. Jedes Protokoll ist eine Kindklasse mit spezifischen Funktionen. Derzeit verwende ich in meiner Anwendung direkt meine untergeordneten Klassen, aber ich möchte das Protokoll dynamisch ändern.Verwenden Sie eine abgeleitete Klasse automatisch
Ist es in diesem Fall möglich, die Elternklasse als automatischen Selektor für die Kindklasse zu verwenden? Und um den Elternteil nach dieser Auswahl immer noch zu verwenden?
Zum Beispiel (vereinfacht):
class Parent
{
void Write();
void Read();
void AutomaticProtocolSelector();//depending on the response of the device
virtual void function1();
virtual void function2();
};
class protocol1 : public Parent
{
void function1();
};
class protocol2 : public Parent
{
void function2();
};
int main(int argc, char const *argv[])
{
Parent *p;
p->AutomaticProtocolSelector();//let's say protocol1 is selected
p->function1(); //execute the function1 in the child class
...
}
ich schon einige Beiträge über abgeleiteten Klassen lesen und die Verwendung von dynamic_cats
und static_cast
, aber es ist nicht genau das, was ich suche. Ich werde das benutzen, wenn es nicht möglich ist, wie ich denke.
Es scheint ein besserer Ansatz zu sein, das [_Template Method Pattern_] (https://sourcemaking.com/design_patterns/template_method/cpp/1) in diesem Fall zu verwenden. –
Oder das abstrakte Fabrikmuster https://en.wikipedia.org/wiki/Abstract_factory_pattern – Nyashes
Sicherlich eine interessante Frage, aber eher breit ohne genauere Angaben oder ein reales Beispiel ... –